我正在动态添加新输入。而且我还想从它们中动态读取值。我的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)];
}
答案 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)
您需要做出以下几项更改: - 您没有在您正在显示的代码中的任何位置调用该功能
元素的名称不能包含[] - 因此您应该从名称中删除它们;
<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){