2017-10-06 4 views
0

Ich bin neu in der Programmierung und ich versuche eine To-Do-Liste in Javascript zu programmieren und experimentiere mit JQuery. Ich habe online eine Durchstreichungs-Animation gefunden, die ich in die Liste implementieren wollte, aber ich bin mir nicht ganz sicher, was diese beiden Zeilen Code machen und fragte mich, ob jemand für mich etwas ausarbeiten könnte, damit ich es besser verstehe? Die gestrichener Funktion ist wie folgt:Was machen diese Codezeilen?

//var _Text sets the _Text to the individual list item 
var _text = document.getElementById("item_" + cbId); 
$(document).ready(function() { 
_text = $(itemText).text(); 
StrikeThrough(0); 
}); 
//Strikethrough animation function 
function StrikeThrough(index) { 
    if (index >= _text.length) 
     return false; 
    var sToStrike = _text.substr(0, index + 1); 
    var sAfter = (index < (_text.length - 1)) ? _text.substr(index + 1, 
_text.length - index) : ""; 
    $(itemText).html("<strike>" + sToStrike + "</strike>" + sAfter); 
    window.setTimeout(function() { 
     StrikeThrough(index + 1); 
    }, 100); 

die beiden Linien, die ich bin verwirrt über sind:

var sToStrike = _text.substr(0, index + 1); 
var sAfter = (index < (_text.length - 1)) ? _text.substr(index + 1, _text.length - index) : ""; 

Was ich bin speziell verwirrt darüber ist, was diese Variablen exakt eingestellt werden

+0

Die erste Zeile ruft [ 'substr()'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substr), mit dem ein Teil einer Zeichenfolge abgerufen wird. Die zweite Zeile ist ein [ternärer Ausdruck] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Conditional_Operator), der eine verdichtete if-Bedingung ist. –

+0

Manchmal ist der beste Weg, um Code zu verstehen, ein JS-Debugger zu verwenden, z. B. eine Debugger-Anweisung vor die betreffenden Zeilen zu setzen und dann in der JS-Konsole zu experimentieren. –

Antwort

0

sToStrike wird auf einen Text vom Anfang bis zum nächsten Zeichen der aktuellen Indexposition gesetzt sAfter wird der Rest der Zeichenfolge festgelegt, wenn der Index nicht bereits das letzte Zeichen

ist
0

Diese Zeile weist sToStrike einen Teil von _text aus dem Index 0 indizieren index + 1:

var sToStrike = _text.substr(0, index + 1); 

Diese Zeile enthält einen ternären Ausdruck, der ein Inline-if/else ist. Er ordnet sAfter entweder einen Teil _text aus dem Index index + 1 indizieren _text.length - index oder eine leere Zeichenfolge "" abhängig von index < (_text.length-1) auf Wahr oder Falsch Auswertung in ihrer jeweiligen Reihenfolge:

var sAfter = (index < (_text.length - 1)) ? _text.substr(index + 1,_text.length - index) : "";