代码之家  ›  专栏  ›  技术社区  ›  Ali

如何解析javascript中的变量

  •  1
  • Ali  · 技术社区  · 16 年前

    我正在尝试使用此代码:

    var field="myField";
    vals[x]=document.myForm.field.value;
    

    在我的HTML代码中

    <form name="myForm">
      <input type='radio' name='myField' value='123' /> 123
      <input type='radio' name='myField' value='xyz' /> xyz
    </form>
    

    但这给了我一个错误:

    document.myForm.field is undefined
    

    我怎样才能得到 field 将被视为变量而不是字段?

    4 回复  |  直到 16 年前
        1
  •  7
  •   rmeador    16 年前

    假设您的其他语法是正确的(我没有检查),这将满足您的需要:

    var field="myField";
    vals[x]=document.myForm[field].value;
    

    在JS中,括号运算符是按名称访问器获取属性。你可以多读一些 here .

        2
  •  3
  •   Rafael    16 年前

    使用elements[]集合

    document.forms['myForm'].elements[field]
    

    elements collection in DOM spec

    顺便说一句,如果您有两个同名的字段,要获取任何字段的值,您必须从中读取:

    var value = document.forms['myForm'].elements[field][index_of_field].value
    

    如。

    var value = document.forms['myForm'].elements[field][0].value
    

    而且,如果要获取所选单选按钮的值,则必须检查所选的单选按钮。

    var e = document.forms['myForm'].elements[field];
    var val = e[0].checked ? e[0].value : e[1].checked ? e[1].value : null;
    
        3
  •  2
  •   Greg    16 年前

    你必须这样做:

    var field = "myField";
    vals[x] = document.myForm[field].value;
    

    甚至

    vals[x] = document.forms.myForm.elements[field].value;
    
        4
  •  0
  •   KyleFarris    16 年前

    根据您的标记,您似乎正在使用jquery。如果是这样,你就可以这样做,这会让你的生活更轻松:

    var vals = new Array();
    $("form[name='myForm'] :radio").each(function() { 
        vals.push($(this).val()); 
    });
    

    -D