[英]How do I reference text boxes using a variable
因此,我第一次进行JavaScript小测验。 我希望用户能够通过在文本框中输入字母并单击按钮来检查答案,从而在3个选项(a,b和c)之间进行选择。 然后,文本框下方将显示一个文本,以显示用户是否输入了正确的选项。
我设法完成了这项工作,但是由于存在多个问题,我想使用一个for
循环遍历每个文本框(我将每个文本框命名为“ 0”,“ 1” ...),但是我无法使用i
我该怎么做?
这是我的JavaScript:
var answer = ["a", "b", "c"];
var results = "results"
function check() {
for (i = 1; i = 4; i++) {
var input = document.getElementById(i).value;
if (input == answer[parseInt(i-1)]) {
document.getElementById(results.concat(i)).innerHTML = "Correct";
}
else {
document.getElementById(results.concat(i)).innerHTML = "Wrong";
}
}
}
这是HTML(对于每个问题,我使用不同的ID重复了相同的代码):
<input type="text" id="0" value="a, b or c"><br>
<input type=button value="Check" onClick="check()"><br>
Result: <span id="results0"></span><br><br>
如果所有这些都在<div>
或div标记内,则可以使用:nth-child表示法引用它们。 这通过从头开始引用第n个孩子来工作。
$("div:nth-child(i)");
遍历id的感觉对我来说很脏。 从维护和可读性的角度来看,我建议您改为遍历节点集合。
我相信您正在寻找:
document.getElementsByClassName("someClass")[0];
其中[0]将是共享whos类的元素的索引。
这是我编写的代码示例,供您使用文本框供您参考,并将值输出到for循环内的div中。
使用您提供的HTML,for循环不正确。
由于您从0开始输入,因此您想从0开始循环。
for (i = 0; i <= 2; i++) { //with three values 0,1,2
...
}
您的<span>
标记也需要用</span>
关闭
这应该可以工作:原始代码有些错误
错误:
for (i = 1; i = 4; i++)
通常我们从0索引开始迭代,for循环的中间部分也应该返回true,这意味着它应该求值为true或false“ i = 4”永远不会是因为=是赋值运算符,所以应该使用求值运算符>,<,> =,==等
for (i = 0; i < 3; i++) {
var input = document.getElementById(i).value;
if (input == answer[i]) {
document.getElementById("results" + i).innerHTML = "Correct";
}
else {
document.getElementById("results" + i).innerHTML = "Wrong";
}
}
另外,您在此像变量一样使用“结果”:
results.concat(i)
因此,结果需要是一个包含字符串“结果”的变量,我怀疑情况确实如此。 所以我们通过这种方式告诉getElementById方法
document.getElementById("results" + i)
是找到一个ID为“结果”的元素加上循环索引,例如。 id =“ result0”或id =“ result1”等。
您可以动态创建输入框,并为其生成跨度和大量动态ID,然后单击按钮检查正确答案
使用Javascript:
var answer = ["a", "b", "c"];
var results = "results";
setTimeout(function(){
var injectData='';
for(var i=0;i<3;i++){
injectData+="<input type='text' id='id_"+i+"' placeholder='a, b or c'/> Result: <span id='results_"+i+"'></span><br/>";
}
document.getElementById('inject').innerHTML=injectData;
},500);
function check() {
for (i = 0; i <3; i++) {
var input = document.getElementById('id_'+i).value;
if (input == answer[i]) {
document.getElementById("results_"+i).innerHTML = "Correct";
}
else {
document.getElementById("results_"+i).innerHTML = "Wrong";
}
}
}
HTML:
<div id="inject">
</div>
<input type=button value="Check" onClick="check();"><br>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.