除了选择表单之外,JavaScript还会继续抛出“Uncaught TypeError”

时间:2015-04-14 19:28:51

标签: javascript html select

我不断收到错误"Uncaught TypeError: Cannot read property 'add' of null",该错误发生在select.add("HI!", 0);行。我认为这是因为名称不匹配,这就是列表存在的原因,但这并没有解决问题。任何指导都很棒!

<script type="text/javascript">
        for(i = 0; i < 10; i++){
            var names = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]
            //window.alert(names[i])
            document.write('<tr>');
            document.write('<td>');
            document.write('<select id=names[i]></select>');        
            var select = document.getElementById(names[i]);
            select.add("HI!", 0);           
            document.write('</td>');
            document.write('</tr>');
        }
    </script>

谢谢

2 个答案:

答案 0 :(得分:2)

您不能只是将文本添加到选择中,您需要创建一个选项元素然后添加它。试试这个:

<script type="text/javascript">
    for(i = 0; i < 10; i++){
        var names = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]
        //window.alert(names[i])
        document.write('<tr>');
        document.write('<td>');
        document.write('<select id=' + names[i] + '></select>');        
        var select = document.getElementById(names[i]);
        var option = document.createElement('option');
        option.text = 'Hi';
        select.add(option, i)
        document.write('</td>');
        document.write('</tr>');
    }
</script>

答案 1 :(得分:1)

你的document.write('<select id=names[i]></select>');会写出那个确切的字符串,而不是你想要的数组中的值。你可以尝试: document.write('<select id=' + names[i] + '></select>');

如同isherwood并且您发现错误,您必须将optionoptiongroup元素传递给add方法才能生效。