2016-04-20 5 views
1

Hier ist die Geige, die mein Problem darstellt: https://jsfiddle.net/Ognj3n/jLjh9oLm/ Grundsätzlich, wenn jemand auf einen der Tasten onclick Funktion klickt ändert Hintergrundfarbe der Schaltfläche, so dass der Benutzer weiß, welche Button wird geklickt, aber ich habe diesen Teil des Codes in meiner Geige weggelassen. Jetzt habe ich versucht, Werte aller angeklickten Knöpfe in ein Array zu setzen, in Geige sollte es value von input Element werden. Versuche es, wie dies zu tun:Wie man Werte aller aktiven Tasten in ein Array mit jQuery

$(document).ready(function(){ 
     $('button.clicked').click(function(){ 
      var clickedButtons= new Array(); 
      $('button[background-color="rgb(76, 175, 80)"]').each(function(){ 
       clickedButtons[clickedButtons.length]=this.value; 
      }); 
     }); 
    }); 

Aber innerhalb $('button[background-color="rgb(76, 175, 80)"]').each(function() nichts Konsolenprotokollierung, als ob dieser Teil des Codes ist nicht zu interpretieren. Bitte helfen Sie, ich bin fest

+1

Sie wählen sie ihren Stil nicht verwenden (Dies funktioniert einfach nicht - Sie‘ Re tatsächlich hier Schaltflächen mit Attribut 'background-color' mit einem Wert von' rgb (76, 175, 80) '), aber von einer Klasse, die diesen Stil auf die Schaltfläche statt –

Antwort

3

Wenn Sie die Tasten Wert innerhalb eines Arrays hinzugefügt werden soll, jedes Mal, wenn eine Taste gedrückt wird Sie Ihren Code wie unten bearbeiten:

Jedes Mal, wenn Sie eine Taste drücken, ich rufe die push() Funktion, die den Elementwert innerhalb des Arrays hinzufügt.

Code:

$(document).ready(function() { 

    var clickedButtons = new Array(); 

    $('button.clicked').click(function() { 

    clickedButtons.push(this.value); // adds element to the array 
    $(this).unbind('click'); // stop listening 

    console.log(clickedButtons); 

    $("here").val(clickedButtons.join()); 

    }); 


}); 

Working jsFiddle

Zusätzliche Anmerkung:

  • ich alle onclick="..." Tasten aus dem HTML-Attribut entfernt, da es nicht, wenn Sie den Klick hören benötigt wird Ereignis mit jQuery.

-

Edit (Toggle-Version)

Wenn Sie die Schaltfläche Werte innerhalb des Arrays wechseln müssen Sie müssen nur folgende Änderungen vornehmen:

AB:

clickedButtons.push(this.value); // adds element to the array 
$(this).unbind('click'); // stop listening 

TO:

var index = clickedButtons.indexOf(this.value); 

if (index === -1) 
    clickedButtons.push(this.value); //value not found so push it 
else 
    clickedButtons.splice(index, 1); // value found so remove it 

Working jsFiddle

+0

setzen Was ist der Sinn in Iterieren über' $ (dies) "welche Referenz zum angeklickten Knopf? –

+0

@AlonEitan richtig, es hat keinen Sinn. Ich verließ das, wie es von dem Code war, den das OP bekanntgab.Ich bearbeite meine Antwort, danke – fbid

+0

Ich werde dich wieder mit der Frage nageln: "Was passiert, wenn du mehrmals auf den gleichen Knopf klickst"? :) Aber ich werde auch Ihre Antwort –

0
Below is the working fiddle 



    [$(document).ready(function() { 
    var clickedButtons = new Array(); 
$('button.clicked').click(function() { 
    $(this).css('background','red'); 
    clickedButtons.push(this.value); 
    $("#here").val(clickedButtons.join()); 
    }); 

}); ]

https://jsfiddle.net/jLjh9oLm/4/

0

Sie benötigen diese Variable, die Punktstrom

 $(document).ready(function() { 
    $('button.clicked').click(function() { 
    alert($(this).text()); 
    }); 
}); 
Verwandte Themen