2013-05-29 116 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