Для такого небольшого количества символов самый простой способ - поместить каждый из них в отдельный диапазон:
<span>0</span><span>0</span><span>0</span><span>0</span> <span>0</span><span>0</span><span>0</span><span>0</span> <span>0</span><span>0</span><span>0</span><span>0</span>
Я бы также поместил все эти символы в контейнер и подключил click
событие на контейнере, а не на отдельных участках, поэтому:
<div id="container">
<span>0</span><span>0</span><span>0</span><span>0</span> <span>0</span><span>0</span><span>0</span><span>0</span> <span>0</span><span>0</span><span>0</span><span>0</span>
</div>
Затем подключите его:
var container = document.getElementById("container");
if (container.addEventListener) {
container.addEventListener('click', clickHandler, false);
}
else if (container.attachEvent) {
container.attachEvent('onclick', function(e) {
return clickHandler.call(container, e || window.event);
});
}
В обработчике кликов используйте event.target
, чтобы узнатькакой промежуток времени был нажат:
function clickHandler(event) {
var span = event.target;
// Do something with the span, such as look at its `innerHTML` and
// see if it's "0" -- if so, make it "1"; if not, make it "0"
}
Дополнительные сведения:
Как вы могли видеть выше, мне пришлосьобойти тот факт, что некоторые браузеры используют стандарт addEventListener
, а другие (IE8 и более ранние версии) используют attachEvent
.Я рекомендую использовать хорошую библиотеку JavaScript, такую как jQuery , Прототип , YUI , Closure или любой из нескольких других .Они сглаживают такие несоответствия браузеров и добавляют множество очень полезных служебных функций, чтобы вы могли сосредоточиться только на том, что вы пытаетесь сделать.
Например, этот код обработчика, написанный с использованием jQuery:
$("#container").on("click", "span", function() {
// `this` refers to the span that was clicked; you can use
// `innerHTML` as above, or wrap it in a jQuery instance
// like this:
// var $this = $(this);
// ...and then use jQuery's `html` function to both
// retrieve and set the HTML.
});