Javascript getElementsByName返回未定义的

Javascript getElementsByName返回未定义的,javascript,html,Javascript,Html,这是我的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

这是我的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>

var crct_answrs=新数组();
var answrs=新数组();
函数检查{
对于(变量i=1;i<11;i++){
var tst=“ques”+i;
var radio=document.getElementsByName(tst);
对于(var x=0;x
这是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
标记,并且
输入
名称也相应更改。
check_ans()
onclick
上运行。但始终
getElementsByName
返回未定义的。为什么会发生这种情况。请帮帮我。谢谢

您的错误在于:

if (radio[x].checked) {
    answrs = radio.value;
}
answrs
是一个数组,需要为其所在的相应迭代器的索引设置值
radio.value
正在尝试从
radio
数组访问值,但也忽略了它的索引。请查看下面我的解决方案以获得修复:


我有一份工作

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);
}​
嗯,这对我很有用(我删除了一些PHP代码)


var crct_answrs=新数组();
var answrs=新数组();
函数检查{
对于(变量i=1;i<11;i++){
var tst=“ques”+i;
var radio=document.getElementsByName(tst);
警报(无线电);
对于(var x=0;x

与您的代码有什么不同吗?警报调用显示值。

我有时会将未定义的变量分配给
document.getElementsByName(名称)

所以我想看看网络上的答案是否有帮助。唉,什么都没用


所以我继续测试我认为应该得到的阵列。元素就在那里。因此,只需忽略“未定义”并继续处理变量。

它不会为我返回
未定义的
:事实上,正如@FelixKling所说,
getElementsByname
永远不会返回
未定义的
。我应该把我的整个代码放在这里吗?不,把相关的代码放在这里。您可以使用整个代码创建一个演示。你的错误描述要准确。我更新了我的答案,在顶部解释了你的错误。太棒了。很高兴你成功了!这并不能真正回答问题。另外,正如公认的答案所说,
document.getElementsByName
永远不应该返回
undefined
["1", "2", "3", "4", "3", "2", "1", "2", "3", "4"]
<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>