我拥有所有创建新的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页面上执行此操作时,它就会在标记之间显示为“未定义”。
为什么?
最佳答案
您的代码有很多错误(即使我只看到了一部分)。
关于var loadOp = selectIDA.addOption();
行...
执行此行时,javascript尝试执行名为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/