【问题标题】:Array values not being displayed in drop down list数组值未显示在下拉列表中
【发布时间】:2013-05-28 02:05:27
【问题描述】:

我想在下拉列表中显示数组的元素。我在 for 循环中使用文档对象模型来执行此操作,但不断收到下拉列表为空的错误

Javascript 代码

var str="-1,40,42,43,44,46,47,54,90,890,987,1235,4555,12434,122223,788998,789444,2147483647";
var n =new Array();
n = str.split(",");
alert(n);

var select=document.getElementById("rec");
for(i=0;i< n.length;i++)
{
    var opt=n[i];
    var el=document.createElement("option");
    el.textContent=opt;
    el.value=opt;
    select.appendChild(el);
}

HTML 代码

<div id="rec1" name="rec1" style="display:none">
     <p>Select the Record number of the record you want to edit&approve&nbsp;&nbsp;&nbsp;
         <select id="rec"  name="rec" >
            <option value="def" selected="selected">Select choice</option>
         </select>
</div>

我得到的 TypeError 是“select is null”

【问题讨论】:

  • 我猜你在 select 标签之前有 script 标签。
  • 请发布完整代码
  • 我做了一个有用的小提琴,我把 display:none 拿出来了。 jsfiddle.net/SG8Zw
  • 如果你只是要在下一行分配一个不同的数组,为什么要初始化var n = new Array()

标签: javascript html arrays dom


【解决方案1】:

您必须确保 Javascript 在 DOM 加载后执行。为了确保这一点,大多数人会在window.onload 函数中编写代码,如下所示:

<script>

window.onload = function(){
    var str = "-1,40,42,43,44,46,47,54,90,890,987,1235,4555,12434,122223,788998,789444,2147483647";
    var n = new Array();
    n = str.split(",");

    var select = document.getElementById("rec");
    for (i = 0; i < n.length; i++) {
        var opt = n[i];
        var el = document.createElement("option");
        el.textContent = opt;
        el.value = opt;
        select.appendChild(el);
    }
}
</script>

由于您的 fiddle 似乎工作正常,这可能是问题所在。否则,您的其他代码一定会干扰脚本。另请注意,我已经删除了小提琴上的样式display:none

【讨论】:

  • 非常感谢!!!!!我把我的代码放在一个窗口加载函数中,它工作正常......:)
猜你喜欢
  • 2014-08-09
  • 2015-10-05
  • 2021-10-26
  • 1970-01-01
  • 1970-01-01
  • 2013-08-07
  • 1970-01-01
  • 2022-11-13
  • 1970-01-01
相关资源
最近更新 更多