我有所有这些代码创建新的div并添加innerHTML。在其中,我想添加从XML文件生成的下拉列表。我在inner.HTML中动态创建标记时遇到了问题。
现在,这都是动态的,用户应该根据需要添加新元素。因此,作为一种解决方法,我有一堆var值可以相互处理,因此事物对应于相同的ID。
var opselectCounterA = '1';
var opselectCounterB = '1';
var selectCounter = '1';
我要添加的标记也在inner.HTML中。
something.innerHTML = "<select id='partSelect" + (selectCounter++) + "'>" + (loadOp) + "</select>";
var selectIDA = "partSelect" + opselectCounterA++;
var selectIDB = "partSelect" + opselectCounterB++;
var loadOp = selectIDA.addOption();
function addOption(){
selectIDB.innerHTML = "<option>Please work.</option>";
}
每当此处理在我的HTML页面上时,它在标记之间显示为“未定义”。
为什么?
答案 0 :(得分:2)
您的代码存在很多问题(即使我只看到其中的一部分)。
关于第var loadOp = selectIDA.addOption();
行......
addOption()
对象上存在的名为selectIDA
的函数。但是selectIDA
变量实际上是一个没有addOption()
函数的字符串。由于javascript在addOption()
对象上找不到名为selectIDA
的函数,因此会将loadOp的值设置为undefined
。var loadOp = addOption();
,loadOp
的值仍然未定义,因为addOption()
不会返回任何值。也许你应该沿着这些方向尝试更多......
// Function takes a select element and some text as args
// then adds option elements to the select
function addOption(select, optionText) {
var option = document.createElement("option");
option.innerText = optionText;
select.appendChild(option);
}
var opselectCounterA = 1;
opselectCounterA++;
var selectIDA = "partSelect" + opselectCounterA;
// Create the select element
var selectA = document.createElement("select");
selectA.setAttribute("id", selectIDA);
// Add options to that select element
addOption(selectA, "My First Option");
addOption(selectA, "My Second Option");
addOption(selectA, "My Third Option");
// Add the select element to the body
document.body.appendChild(selectA);
查看有关jsFiddle的工作示例:http://jsfiddle.net/Nxezs/