Ich möchte den Wert einer Variablen mit einer Funktion festlegen und an eine andere übergeben, damit ich damit das Ergebnis bestimmen kann. Betrachten Sie den Versuch, die Variable 'Highlight' unten zu definieren:

Funktionen definieren:

<script>
$(document).on('click', '.more', function(t) {
var highlight = 1;
});

$(document).on('click', '.less', function() {
var highlight = 0;
});
</script>

Jetzt sollte ich entweder die Markierung auf 1 oder 0 setzen. Ich möchte dies in einem anderen Skript verwenden:

<script>
$(document).ready(function(){

    var usericon_info = function(highlight){

    var html = '';
    if(highlight == 0)
        //code... ;

    if(highlight == 1)
        //code... ;

    return html;
    }

});
</script>

Die Werte scheinen jedoch nicht zu vergehen. Wo gehe ich falsch? Es liegt kein Fehler in der Konsole vor.

-1
alias51 3 Dez. 2013 im 02:49

4 Antworten

Beste Antwort

Es gibt verschiedene Probleme - hauptsächlich, dass highlight in verschiedenen Bereichen mehrmals definiert wird. Diese Bereiche sind:

  • Der .more Klick-Handler;
  • Der .less Clock-Handler; und
  • Die anonyme Funktion, die der Variablen usericon_info im Rahmen der an $(document).ready() übergebenen anonymen Funktion zugewiesen wurde.

Das Schlüsselwort var wird verwendet, um eine Variable im Bereich der enthaltenen Funktion zu definieren (oder, wenn keine enthaltende Funktion vorhanden ist, den globalen Bereich). Sie müssen die Variable highlight also einmal mit {{X2 definieren }} in einem Bereich, der allen Stellen gemeinsam ist, an denen es verwendet wird. Wenn Sie dies tun, verweisen alle diese Funktionen auf dieselbe Variable.

Etwas wie das:

$(document).ready(function(){
    var highlight = 0;

    $( '.more' ).on('click', function(){ highlight = 1; });
    $( '.less' ).on('click', function(){ highlight = 0; });

    var usericon_info = function(){
        var html = '';
        if(highlight == 0)
        {
            //code... ;
        }
        else if(highlight == 1)
        {
            //code... ;
        }
        return html;
    }
});
0
MT0 2 Dez. 2013 im 23:29

Veränderung:

$(document).on('click', '.more', function(t) {
var highlight = 1;
});

$(document).on('click', '.less', function() {
var highlight = 0;
});

Zu:

$(document).ready(function() {
    $('.more').click(function(t) {
        var highlight = 1;
    });
    $('.less').click(function() {
        var highlight = 0;
    });
});

Dies ist besser strukturiert, um sicherzustellen, dass das DOM manipulationsbereit ist, und um sicherzustellen, dass Ihre Funktionen bei den richtigen Ereignissen ausgelöst werden.

Bearbeiten:

Ich würde auch in die Funktion jquery .toggle () schauen. Es könnte für Sie von Nutzen sein. http://api.jquery.com/toggle/

-1
IT-Pro 2 Dez. 2013 im 23:12

Sie müssen die Variablen wie Globale definieren.

Sie können dies auf zwei verschiedene Arten tun

1 - Sie müssen die Variable aus einer solchen Funktion heraus deklarieren

    var highlight;
$(document).on('click', '.more', function(t) {
    highlight = 1;
});

$(document).on('click', '.less', function() {
    highlight = 0;
});

2- Sie deklarieren die Variable ohne den 'Balken', so dass Javascript versteht, dass es sich um eine globale Variable handelt.

$(document).on('click', '.more', function(t) {
    highlight = 1;
});

$(document).on('click', '.less', function() {
    highlight = 0;
});
0
Pelo8888 2 Dez. 2013 im 23:19

Indem Sie die Werte in Ihrer Funktion festlegen, beschränken Sie sie nur auf diese Funktion. Was Sie hier tun, ist das Definieren einer Variablen, wenn Sie auf die Klasse .more klicken, und auf die nur in diesem Klickereignis zugegriffen werden kann oder sofern sie nicht als Parameter übergeben wird.

Versuche dies

var highlight;
$(document).on('click', '.more', function(t) {
    highlight = 1;
});

$(document).on('click', '.less', function() {
    highlight = 0;
});

Denken Sie daran, die Variable herauszunehmen, da Sie sonst nur den Variablenwert zurücksetzen.

0
Sterling Archer 2 Dez. 2013 im 22:54