数组在if语句中显示未定义

伊瓦尼·哈立德(Iwani Khalid)

我有一段HTML标记,对于课程来说看起来像这样。这是由我的客户使用的CMS预定义的

<ul class="box-3036">
  <li aria-selected="true">
    <a href="#" id="ui-id-5">Dentistry</a>
  </li>
</ul>

我有一堆课程,这是另一门课程的HTML块的另一个示例。

<ul class="box-3032">
  <li aria-selected="true">
    <a href="#" id="ui-id-7">Pharmacy</a>
  </li>
</ul>

我正在尝试为所有这些课程编写jQuery代码。在HTML块中,这是唯一的信息

  • <ul>
  • <a>ID
  • <a>点击打开了两个课程网址

这是我现在拥有的jQuery代码。我面临的问题是URL变量给了我未定义的

box = [
  ".box-3036",
  ".box-3032"
];  

uiid = [
  "a#ui-id-5",
  "a#ui-id-7"
];  

urlfirst = [
  "http://www.yahoo.com",
  "http://www.gmail.com"
];

urlsecond = [
  "http://www.google.com",
  "http://www.7senarai.com "
];   



for (var i = 0; i < box.length; i++) {
        $(box[i] + " " + uiid[i]).click(function() {

      var pid = $(this).parent().attr("aria-selected");
      if(pid == "true") { 
        //window.open(urlfirst[i], '_blank');
        //window.location.href = urlsecond[i];
        alert(urlfirst[i]);
        alert(urlsecond[i]);

      }
    });

}

这是我的jsfiddle

胜利

问题在于var ifor循环的作用域位于传递给单击的函数之上,因此在此例中i,在循环完成之后,您将获得AF的值2您希望i将范围限定为您的点击功能

 for (var i = 0; i < box.length; i++) {
    (function (i) {
            $(box[i] + " " + uiid[i]).click(function () {
          var pid = $(this).parent().attr("aria-selected");
          if(pid == "true") { 
            //window.open(urlfirst[i], '_blank');
            //window.location.href = urlsecond[i];
            alert(urlfirst[i]);
            alert(urlsecond[i]);

          }
        });
     })(i); // bring i into scope
 }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章