使用html数组按名称获取元素

时间:2015-07-12 20:53:38

标签: javascript html

我正在动态添加新输入。而且我还想从它们中动态读取值。我的championName变量在JS中不起作用。

<form name="second_form" id="second_form" action="#" method="POST" style="margin: 0;"  >
    <div id="p_scents">
        <p>    
            <label for="p_scnts">
                <input type="text" id="p_scnt" size="20" list="champions" name="champion[]" value=""  placeholder="Enter Champion's name">
                <datalist id="champions"></datalist>
                <a href="#" id="addGeneral">Add General Change</a><a></a>
                <a href="#" id="addSpell"> Add Spell</a><a></a>

            </label>
        </p>
    </div>
    <br/><input type="submit" value="submit">
</form>


function val(doublechamp) {
    var championsWithExtraSpells = ["Aatrox", "Elise", "Fizz", "Heimerdinger", "Jayce", "Lee Sin", "Nidalee", "Rek'Sai","Twisted Fate"];
    var champion = this["champion[]"];
    var championName = document.getElementsByName("Champion[]").value;

    if($.inArray(championName, championsWithExtraSpells)==-1){
        var existsInArray = false;}
        else{
        var existsInArray = true;}

    d = document.getElementById("change[]").value;
    var spellname = document.getElementById("ttt");
    spellname.value=champions[""+championName+""][change(d, existsInArray)];

}

2 个答案:

答案 0 :(得分:0)

行中 getElementsByName()返回的集合,所以只需将其替换。

<强>已更新

JS:

替换:

var championName = document.getElementsByName("Champion[]").value;

通过:

for(var i=0;i<document.getElementsByName("champion[]").length;i++)
     var championName = document.getElementsByName("champion[]")[0].value;

现在您可以获得所有输入值。

答案 1 :(得分:0)

您需要做出以下几项更改: - 您没有在您正在显示的代码中的任何位置调用该功能

  • 您需要在输入中添加onChange子句或者向表单添加onsubmit以检查值..
  • 元素的名称不能包含[] - 因此您应该从名称中删除它们;

      <input type="text" id="p_scnt" size="20" list="champions" name="champion" value=""  placeholder="Enter Champion's name">
    
  • getElementsByName返回nodelist,而不是单个节点(即使只有一个匹配)。如果您进行以下更改,您将会更进一步:

在脚本中改变这两行:

    var championName = document.getElementsByName("champion");

    if($.inArray(championName[0].value, championsWithExtraSpells)==-1){