Dla takiej małej liczbie znaków, najprostszym sposobem jest umieszczenie każdego z nich w swojej rozpiętości:
<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>
ja również umieścić wszystkie te, w pojemniku, a hak zdarzenia click
na pojemniku, a nie na poszczególnych przęseł, więc:
<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>
Następnie podłączyć go:
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);
});
}
W swojej click obsługi, użyj event.target
aby dowiedzieć się, które rozpiętość został kliknięty:
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"
}
Więcej zbadać:
Jak widać powyżej, musiałem obejść fakt, że niektóre przeglądarki używać standardowego addEventListener
i inni (IE8 i wcześniej) używać attachEvent
.Zalecam używanie dobrej biblioteki JavaScript, takiej jak jQuery, Prototype, YUI, Closure lub any of several others. Zwalniają te niespójności w przeglądarkach i dodają wiele przydatnych funkcji narzędziowych, dzięki czemu możesz skupić się tylko na tym, co próbujesz zrobić.
Na przykład, że kod obsługi napisane przy użyciu 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.
});
Jeśli użyto czcionką szeryfową prawdopodobnie można zorientować się w sytuacji, ponieważ współrzędnych kliknięcia (ale ja bym tego nie zrobił). Będziesz musiał zawijać każdy znak w '' lub podobnym – scibuff
@scibuff, który faktycznie działa dobrze, jeśli wyzerujesz dopełnienie/margines/obramowanie. –
Nie wiem, czy będziesz w stanie to zrobić, jeśli nie określisz klasy zakresu dla każdego znaku w łańcuchu. –