2010-12-14 90 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