带循环的jQuery函数不起作用

时间:2017-10-04 09:29:07

标签: jquery

我尝试制作一个简单的函数,它应该在窗口中给我一些警告。我在那里犯了一个错误,却找不到它。这是我的代码:

FastMM4.pas
var testList = new Array {
  "This",
  "is",
  "a",
  "loop"
};

function printList(list) {
  for (i = 0; i < list.length; i++) {
    alert(list[i]);
  }
  return;
}

$("#button1").click(printList(list));

3 个答案:

答案 0 :(得分:1)

有几个问题:

  • 您需要使用()来包含数组项,而不是{}
  • 变量为testList,而不仅仅是list
  • 当你正在传递函数的结果而不是引用时,你正在加载页面的printList()函数>
  • 放置在函数末尾时return是多余的

另请注意,您应该使用console.log进行调试,而不是alert()。后者是不好的,因为它强制数据类型,所以你看到的可能不一定是实际值。它也是模态的,这意味着它会阻止UI更新。更不用说当你在一个循环中这样做时真的很烦人,你必须点击'确定&#39; N次。

最后,您可以使用[]来声明元素来缩短数组定义,如下所示:

&#13;
&#13;
var testList = ['This', 'is', 'a', 'loop'];

function printList(list) {
  for (i = 0; i < testList.length; i++) {
    console.log(testList[i]);
  }
}

$("#button1").click(function() {
  printList(testList);
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="button1" type="button" value="Click me!" />
&#13;
&#13;
&#13;

答案 1 :(得分:0)

你可以试试这个

&#13;
&#13;
var testList = ["This", "is", "a", "loop"];

 

$("#button1").click(function(){
printList(testList);
});

    function printList(list) {
      for (i = 0; i < list.length; i++) {
        alert(list[i]);
      }
      return;
    }
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="button1" type="button" value="Click me!" />
&#13;
&#13;
&#13;

答案 2 :(得分:0)

Creating an Array in Javascript
Syntax:
var array_name = [item1, item2, ...];
var testList = ["This", "is", "a", "loop" ];

JavaScript HTML DOM EventListener:
The addEventListener() method attaches an event handler to the specified element.
document.getElementById("button1").addEventListener("click", function(){ printList(testList); });