【问题标题】:jQuery: Concatenation Results in UndefinedjQuery:连接导致未定义
【发布时间】:2010-11-29 17:53:49
【问题描述】:

我正在尝试在选择中显示 10 个选项标签。 notaDt.text() 是当前值。因此,如果该值与 i 匹配,则会显示“已选择”。

var n, select, option;              
for(var i=10; i>=1; i--) {  
    n = notaDt.text();
    select = ( i == n ? "selected" : "");
    option = option + '<option value="' + i + '" ' + select + ' >' + i + '</option>';
}

问题在于 option = option + ... 它在被调用时返回 " undefined"(如下所示),但一切正常。 p>

http://img821.imageshack.us/img821/2951/screenshot20101129at749.png

是否有任何其他连接方法我可以尝试不收到此消息?谢谢!

【问题讨论】:

    标签: jquery variables loops concatenation


    【解决方案1】:

    option 需要以空字符串开头,如下所示:

    var n, select, option = "";  
    

    否则,当您第一次与option 连接时(此时为undefined),您将得到"undefined" 来开始您的字符串,因为您会得到undefined 的toString 结果。

    【讨论】:

    • 谢谢你们。尼克先回答,所以我会尽快给他胜利。
    • @Norbert,尼克总是首先回答,但这次是 6 秒! :)
    • @Jacob Relkin:而且非常准确:)
    【解决方案2】:

    您需要将option 设置为初始的空白字符串 - 像这样:

    var n, select, option = "";
    

    为什么不使用+= 而不是option = option + - 这只是我的意见。

    【讨论】:

      【解决方案3】:

      在第一次连接之前,选项最初是未定义的。为什么不初始设置为空字符串?

      var n, select;
      var option = "";
      for(var i=10; i>=1; i--) {  
          n = notaDt.text();
          select = ( i == n ? "selected" : "");
          option = option + '<option value="' + i + '" ' + select + ' >' + i + '</option>';
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-05-29
        • 2017-05-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-05
        • 1970-01-01
        相关资源
        最近更新 更多