2016-05-19 9 views
0

Gestern begann ich Code für einige zufällige Übung zu schreiben, die ich im Internet gefunden habe. Meine Aufgabe war es, eine leere HTML-Tabelle zu haben, und wenn der Benutzer eine bestimmte Taste drückte, änderte er die Farbe der Zelle in die entgegengesetzte Farbe (grün oder rot) und änderte (addiert oder löscht 1) seinen Wert. Nach 10 Zellenklicks sollte es eine Nachricht mit dem Durchschnitt und einigen anderen Dingen warnen. Das erste Mal, wenn ich auf den Knopf klicke, funktioniert alles gut. Bei nachfolgenden Klicks verhält es sich jedoch merkwürdig. Hier ist ein Teil des CodesJavascript (jQuery) gibt mir seltsame Ergebnisse

//..... 
var n=0; 
$("#b1").click(function(){ 
    document.getElementById("b1").disabled = true; 
    $("td").removeClass(); 
    for (var i=0; i<25; i++) 
    { 
     var z=$("td").eq(i) 
     z.text(Math.floor((Math.random() * 10))) 
     if (z.text()<5) 
     { 
      z.addClass("linkClass") 
     } 
     else 
     { 
      z.addClass("linkClass2") 
     } 
    } 
    $("td").click(function(){ 
    n++; 
    if ($(this).hasClass("linkClass")) 
    { 
     $(this).removeClass() 
     $(this).text(parseInt($(this).text())-1); 
     $(this).addClass("linkClass2") 
    } 
    else 
    { 
     $(this).removeClass() 
     $(this).text(parseInt($(this).text())+1); 
     $(this).addClass("linkClass") 
    } 
    if (n==10) 
    { 
     alert("Ten times clicked"); 
     document.getElementById("b1").disabled = false; 
     n=0; 
    } 

Klassen linkClass und linkClass2 ändern sich nur die Hintergrundfarbe der Zelle. Irgendwelche Ideen?

+1

Es würde den Menschen helfen, das Problem zu verstehen, wenn Sie ein wenig mehr sein könnte beschreibender als "es verhält sich seltsam". – Pointy

+0

Nun das zweite Mal, ich drücke die Taste zu starten und ich klicke 5 Zellen die Nachricht "Zehn Mal Klicks" Pops.Das dritte Mal knallt es in noch weniger Klicks. –

Antwort

1

Sie sollten $("td").click(function(){ aus $("#b1").click(function(){ bewegen, weil jedes Mal, wenn Sie klicken Sie noch ein Klick binden auf td so führt er mehrere Klicks in einer Zeit

+0

sollte ich eine neue funktion erstellen und den code dorthin verschieben, wenn ja wie soll ich das nennen? –

+0

@Aliator. Nein, sie sollten nur auf dem gleichen Niveau sein. Wie: '$ (" # b1 "). Click (function() {...}); $ ("td"). click (function() {...}); ' –

+0

aber sie sind auf dem gleichen Level, nicht wahr? Entschuldigung für diese vielen Fragen ich bin nur neu zu all diesen. (Könnten Sie bitte ein Beispiel davon posten?) –

Verwandte Themen