我拥有所有创建新的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/

10-04 12:07