Javascript“未定义”输出问题

时间:2012-02-17 14:38:44

标签: javascript forms select

我有所有这些代码创建新的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页面上时,它在标记之间显示为“未定义”。

为什么?

1 个答案:

答案 0 :(得分:2)

您的代码存在很多问题(即使我只看到其中的一部分)。

关于第var loadOp = selectIDA.addOption();行......

  1. 当此行执行时,javascript尝试执行addOption()对象上存在的名为selectIDA的函数。但是selectIDA变量实际上是一个没有addOption()函数的字符串。由于javascript在addOption()对象上找不到名为selectIDA的函数,因此会将loadOp的值设置为undefined
  2. 此外,即使您编写了var loadOp = addOption();loadOp的值仍然未定义,因为addOption()不会返回任何值。
  3. 也许你应该沿着这些方向尝试更多......

    // 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/