2013-05-29 43 views
0

我試圖製作腳本來計算3個不同div的點擊鏈接。你可以添加一些筆記什麼是我的代碼錯了。計數divs中的點擊

的JavaScript

window.onload = function() { 
span = document.getElementById('span'); 
var sumcount = 0; 
span.innerHTML = sumcount; // Записываем начальное значение 

    document.body.onclick = function (e) { 
    e = e || event; 
    var target = e.target || e.srcElement; 

    var countItem1 = 0, 
     countItem2 = 0, 
     countItem3 = 0; 

    if (target.className == 'item1') { 
     countItem1++; 
     sumcount++; 
     //здесь отсылаем новые данные на сервер, при удачном ответе обновляем содержимое span 
     span.innerHTML = countItem1; 
    } 

    if (target.className == 'item2') { 
     countItem2++; 
     sumcount++; 
     //здесь отсылаем новые данные на сервер, при удачном ответе обновляем содержимое span 
     span.innerHTML = countItem2; 
    } 

    if (target.className == 'item3') { 
     countItem3++; 
     sumcount++; 
     //здесь отсылаем новые данные на сервер, при удачном ответе обновляем содержимое span 
     span.innerHTML = countItem3; 
    } 
} 
} 

我不明白這部分代碼,可以請你解釋一下我。 MERCI

document.body.onclick = function (e) { 
    e = e || event; 
    var target = e.target || e.srcElement; 
+0

你說你不明白的部分是跨瀏覽器的compat代碼。 ||返回第一個定義的(真值)選擇。它允許根據瀏覽器爲同一事物具有不同屬性名稱的情況編寫代碼。 – MatthewMartin

+1

在發佈問題時,您應該始終包含關於您的代碼做錯的描述,或者產生的錯誤或其他要澄清的內容。 – Pointy

+0

補充Matthew的評論:這是一個簡短形式的if(e.target){target = e.target; } else {target = e.srcElemet; }' – Kiruse

回答

0

這些計數器必須進行申報處理函數就像 「sumcount」。

事件處理程序開始處的代碼符合Internet Explorer,它不會將事件引用作爲參數傳遞,而是調用事件目標屬性「srcElement」而不是「target」。

0

的JavaScript工具包做了很好的工作解釋它:

的事件模型在IE和Firefox不同的方式實現。在IE中,有一個顯式的window.event對象,當事件發生時記錄事件的任何細節(即:onclick),而在Firefox和其他符合W3c的瀏覽器中,默認的Event對象會自動傳入與事件相關的函數包含有關該事件的類似信息的處理程序。 1