我有一个HTML列表框,我需要在页面加载时为其添加值。我试图在<body>
标记和<select>
标记上的页面加载事件上调用JS函数,但它不执行该函数。
<body onload='popListbox(<%=session.getAttribute("objNames")%>)'>
<select id="lstObjects" onload='popListbox(<%=session.getAttribute("objNames")%>)'>
如果我尝试onclick
它会执行正常但不会在onload
事件中执行。有人可以帮我这个。?
更新:我的JS功能
function popListbox(objList){
var select = document.getElementById("lstObjects");
var objects = objList;
var objects_array = [];
for(var i in objects) {
if(objects.hasOwnProperty(i) && !isNaN(+i)) {
objects_array[+i] = objects[i];
}
}
for(var i = 0; i < objects_array.length; i++) {
var opt = objects_array[i];
var el = document.createElement("option");
el.textContent = opt;
el.value = opt;
select.appendChild(el);
}
}
答案 0 :(得分:0)
尝试document.ready
$(document).ready(function(){
//你的代码在这里
});
答案 1 :(得分:-1)
什么是JS功能? 我怀疑,因为只有body标签有一个onload处理程序,也许你的js函数在从文档根目录触发时不知道元素上下文。
function popListbox(objList){
var select = document.getElementById('lstObjects');
for(i=0,ic=objList.length;i<ic;++i) {
var el=document.createElement('option');
el.textContent=objList[i];
el.value=objList[i];
select.appendChild(el);
}
}
我不知道为什么它不起作用,但我重写了它,因为它是相同的结果