2010-12-14 160 views
2

我在我的网站上有这段代码,计算图像的数量,然后在用户每次点击所需的类别时输出一个列表。Javascript意外关闭

问题是,我的图像计数器变量(noIMG)在每次调用函数时都不会自行清除。我试着在函数的最后添加一个重置(noIMG),但这似乎是一个糟糕的主意。

我做了一些研究,我偶然发现了有关关闭的文章。尝试了很多方法来修复它之后,我的代码仍然没有按照我希望的方式行事。


function thumbCounter(){ 

    var noIMG = $(".artwork img").size()+1; 

     for (var count = 1; count < noIMG; count++){ 
      if (count == 1){ 
       $('#list_here').append('<li class="active">' +count+ '</li>'); 
      } else{ 
       $('#list_here').append('<li>' +count+ '</li>');  
      } 
     } 
}; 
+0

你怎么称呼它? – BoltClock 2010-12-14 07:14:13

+0

“清除自己”是什么意思? 'count'是你的计数器变量。这是每次调用函数时要从1重新启动的变量。除非您修改中间的DOM以添加图像,否则'noIMG'预计每次调用该函数时都是相同的。但也许这不是你问的问题? – 2010-12-14 07:18:25

+0

您可能会隐藏不同的'noIMG'变量(或窗口属性)。在这段代码中,没有关闭,意外或其他 - 但在上下文中,这可能是一个完全不同的故事! – 2010-12-14 07:19:39

回答

0

如果你的意思是你希望每个函数被调用的时间来清除该列表,那么它这样做:

function thumbCounter() { 
    var noIMG = $(".artwork img").size() + 1; 
    var myList = $('#list_here'); // reference to list 

    myList.html(""); // clear the contents 
    for (var count = 1; count < noIMG; count++) { 
     if (count == 1) { 
      myList.append('<li class="active">' +count+ '</li>'); 
     } else { 
      myList.append('<li>' +count+ '</li>');  
     } 
    } 
}; 
+0

我使用$(“#selector ul”)。empty();清除列表。事情是,每次调用函数时都需要重置为0,这不是IMG。由于某种原因,没有任何IM保存获得的最后一个数字,并且只要该函数被调用 - 它会将其添加到现有数字的顶部。它在第一次呼叫时显示正确的数量,即6;第二次变成12,依此类推...... – 2010-12-14 08:25:07

+0

好的,太糟糕了,这不是你要找的东西。你确定你没有对DOM做些什么,比如添加可以被$(“。artwork img”)匹配的东西吗?把一个完整的例子放在jsfiddle或jsbin上,这可能会解释一些事情。 – dyve 2010-12-14 08:40:59

+0

感谢您的咨询。看起来确实和一个类似的选择器混淆了。 – 2010-12-14 09:32:01