2015-07-12 84 views
-2

我正在動態添加新的輸入。我還想從它們中動態讀取值。我的championName變量在JS中不起作用。通過名稱與html數組獲取元素

<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)]; 

} 
+1

你能更詳細地描述你的問題不僅僅是「*不起作用*「?你期望你的代碼做什麼? –

+0

我希望在我的championName變量 – Higeath

回答

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; 

現在,你可以得到所有的輸入值。

+0

中得到輸入,它總是顯示第一個輸入,例如,我有5個輸入,並在第一個輸入......第二個將顯示在第一個輸入的名稱中 – Higeath

+0

添加for循環將執行@Higeath的工作。 –

+0

http://89.69.172.125/test.php#當你添加冠軍時,你可以添加法術,並根據你選擇哪個冠軍,在被動隊列之間切換時輸入該冠軍的法術,並且我不知道如何讓它工作與更多的投入(打開控制檯來檢查它是如何工作的) – Higeath

0

有一些改動,你需要做: - 你不是在代碼的任何地方調用該函數你展示

  • 你需要一個onchange條款添加到輸入或一個ons提交表單以檢查值。
  • 元素的名稱不能包含[] - 因此您應該從名稱中刪除這些元素;

    <input type="text" id="p_scnt" size="20" list="champions" name="champion" value="" placeholder="Enter Champion's name"> 
    
  • getElementsByName返回節點列表,而不是一個單一的節點(即使只有一個匹配)。如果你做如下修改,你會得到更遠:

而且在腳本改變這兩條線:

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

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