这是我的javascript:
<script type="text/javascript">
var crct_answrs = new Array(<?php echo implode(',', $crct_ans); ?>);
var answrs = new Array();
function check_ans(){
for(var i = 1; i < 11; i++){
var tst = "ques"+i;
var radio = document.getElementsByName(tst);
for (var x = 0; x < radio.length; x ++) {
if (radio[x].checked) {
answrs = radio.value;
}
}
}
}
</script>这是HTML的一部分:
<form>
<div id="quest1" class="question">
<div class="prblm">
<?php echo $questions[1]; ?></div>
<table class="answrs">
<tr>
<td><?php echo $answrs[1][1]; ?></td>
<td><input name="ques1" type="radio" value="1"></td>
</tr>
<tr>
<td><?php echo $answrs[1][2]; ?></td>
<td><input name="ques1" type="radio" value="2"></td>
</tr>
<tr>
<td><?php echo $answrs[1][3]; ?></td>
<td><input name="ques1" type="radio" value="3"></td>
</tr>
<tr>
<td><?php echo $answrs[1][4]; ?></td>
<td><input name="ques1" type="radio" value="4"></td>
</tr>
</table>
</div>我有10个相同模式的div标签和表,input的名称是相应地改变。check_ans()在onclick上运行。但是getElementsByName总是返回undefined。为什么会发生这种情况。请帮帮我。谢谢!
发布于 2012-04-24 05:18:09
你的错误在于:
if (radio[x].checked) {
answrs = radio.value;
}answrs是一个数组,需要将值设置为它所在的相应迭代器的索引。radio.value试图访问radio数组中的值,但也遗漏了它的索引。看看我下面的解决方案来解决问题:
我有一个jsFiddle在工作。
JavaScript:
var answrs = [];
function check_ans() {
for (var i = 1; i <= 10; i++) {
var radio = document.getElementsByName("ques" + i);
for (var x = 0; x < radio.length; x++) {
if (radio[x].checked) {
answrs[i-1] = radio[x].value;
}
}
}
console.log(answrs);
}输出:
为问题1-10选择答案1、2、3、4、3、2、1、2、3、4时,数组为:
["1", "2", "3", "4", "3", "2", "1", "2", "3", "4"]发布于 2012-04-24 05:19:38
嗯。这对我很有效(我删除了一些PHP代码)
<html>
<head>
<script type="text/javascript">
var crct_answrs = new Array();
var answrs = new Array();
function check_ans(){
for(var i = 1; i < 11; i++){
var tst = "ques"+i;
var radio = document.getElementsByName(tst);
alert(radio);
for (var x = 0; x < radio.length; x ++) {
if (radio[x].checked) {
answrs = radio.value;
}
}
}
}
</script>
</head>
<body>
<button type="button" onclick="check_ans();">test</button>
<div id="quest1" class="question">
<div class="prblm">
<?php echo $questions[1]; ?></div>
<table class="answrs">
<tr>
<td><?php echo $answrs[1][1]; ?></td>
<td><input name="ques1" type="radio" value="1"></td>
</tr>
<tr>
<td><?php echo $answrs[1][2]; ?></td>
<td><input name="ques1" type="radio" value="2"></td>
</tr>
<tr>
<td><?php echo $answrs[1][3]; ?></td>
<td><input name="ques1" type="radio" value="3"></td>
</tr>
<tr>
<td><?php echo $answrs[1][4]; ?></td>
<td><input name="ques1" type="radio" value="4"></td>
</tr>
</table>
</div>
<body/>
</html>与你的代码有什么不同吗?警报呼叫显示值。
发布于 2012-06-21 04:50:28
有时我会得到一个分配给document.getElementsByName(name)的未定义的var。
所以我会试着看看网络上的答案会不会有帮助。遗憾的是,这一切都不管用。
所以我继续测试我认为我应该得到的数组。元素就在那里。因此,只需忽略“未定义”并继续使用var。
https://stackoverflow.com/questions/10288247
复制相似问题