2017-11-04 1 views
0

Warum gibt der folgende Code die zuvor aktualisierte Rahmenfarbe und nicht die aktuelle Rahmenfarbe zurück?

Html:

<li><a href="#" data-target="#signupModal" data-toggle="modal" id="signup"> 
<i class="fa fa-user-plus"></i> Sign Up </a></li> 

jQuery:

$('#signup').click(function() { 

    var count = 0; 

    $('#inputEmail').focusout(function() { 

    if ($(this).val() == '') { 

     count++; 
     $(this).css('border-color', 'red'); 
     console.log('No of times input box focused out: ' + count + ' Current border color: ' + $(this).css('border-color')); 
    } else { 

     $(this).css('border-color', 'green'); 
     console.log(' Current border color: ' + $(this).css('border-color')); 
    } 
    }); 
}); 

Es ändert Grenzfarbe völlig in Ordnung, aber es wird nicht angezeigt, die zur Zeit aktualisiert Randfarbe im Browser-Konsole es eher angezeigt werden die zuvor aktualisierte Rahmenfarbe.

+0

Ihr Code scheint in Ordnung [JsFIddle] zu arbeiten (https://jsfiddle.net/jsn2248h /) – user3284463

+0

@ user3284463 es ändert die Rahmenfarbe perfekt, aber in der Browser-Konsole gibt es alte Rahmenfarbe zurück – Ahtisham

+4

Wirklich schlechte Praxis, die Ereignishandler in anderen Ereignishandlern erstellt, wenn Sie unsicher über die Auswirkungen sind, dies zu tun. Erklären Sie Ihr übergeordnetes Ziel hier – charlietfl

Antwort

0

Nicht sicher, was diesen Fehler verursacht. Allerdings wäre mehr sauberer Ansatz eine color Variable zu definieren und protokollieren, die variable Farbe statt:

var count = 0 ; 

$('#inputEmail').focusout (function(){ 
    var color = ""; 

    if ($(this).val() == ''){ 
     count++; 

     color = "red"; /* Update variable */ 
     $(this).css('border-color',color); 

     console.log('No of times input box focused out: ' + count + ' Current border color: ' + color); 

    } else { 

    color = "green"; /* Update variable */ 
    $(this).css('border-color', color); 

    console.log(' Current border color ' + color); 
    } 
}); 

JsFiddle

+0

@charlietfl Er versucht, die 'border-color' eines Elements mit' $ (this) .css (..) 'zu loggen und es scheint nicht zu funktionieren. Hmm, das ist die Lösung, die ich mir vorstellen konnte – user3284463

+0

OK gut im Falle der Verwendung der Variablen suggerieren nur Variablen innerhalb 'if()' ändern und nur eine Protokollanweisung und einen '.css()' Anruf benutzen, um es ein wenig zu trocknen – charlietfl

+0

bitte Kerle help ich denke, dass ich wütend werde :(Es bringt mich um: '( – Ahtisham

Verwandte Themen