通过名称访问元素时的未定义值

时间:2013-12-09 14:12:16

标签: javascript dom

在以下函数中,我尝试验证用户是否选择了适当的选择值。运行脚本时,警报弹出框显示“未定义”。我需要使用其名称而不是ID来获取元素。

Sort table in =
<select name="SortIn">
<option value="Please Choose">Please Choose</option>
<option value="asc">Ascending order</option>
<option value="desc">Descending order</option>
</select>

<input type="submit" name="submit" value="Submit" onclick="return validateForm()"/>
</form>

<script type="text/javascript">
/* <![CDATA [ */

function validateForm()
{
    //Validates that form elements are not empty
            var test = document.getElementsByName('SortIn').value;
    alert(test1);
    if(test1 == null || test == "")
    {
        alert("Please select sorting order");
        return false;
    }
    else
        {
            return true;
        }
}

/* ]]> */
</script>

2 个答案:

答案 0 :(得分:2)

document.getElementsByName('SortIn')会返回 nodelist 。您需要获取该节点列表的第一个元素,如下所示:

var test = document.getElementsByName('SortIn')[0].value;

答案 1 :(得分:1)

你需要引用这样的元素:

var test1 = document.getElementsByName('SortIn')[0].value;
                                                 ^

<强> jsFiddle example

getElementsByName返回一个类似数组的元素集合,因此您需要指定所需元素的索引。