2017-10-06 141 views
0

我是编程新手,我试图在Javascript中编写一个待办事项列表,并正在试验JQuery。我在网上发现了一个删除线动画,我想将其实施到列表中,但我不太清楚这两行代码是做什么的,并且想知道是否有人可以为我详细说明,这样我可以更好地理解?透湿功能如下:这些代码行是做什么的?

//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); 

这两条线,我感到困惑的是:

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

什么我特别困惑的是这些变量被设置准确

+0

第一行调用['SUBSTR()'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substr),它用于获取字符串的一部分。第二行是['三元表达式'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Conditional_Operator),这是一个浓缩的'if'条件。 –

+0

有时,理解代码的最好方法是使用JS调试器,例如,在有问题的行之前放置一个'debugger'语句,然后在JS控制台中进行实验。 –

回答

0

sToStrike设置为从当前索引位置的开头到下一个字符的文本 sAfter如果索引不是最后一个字符,则设置字符串的其余部分

0

此行分配sToStrike_text子串从索引0到索引index + 1

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

此行包含三元的表达,这是一个内联的if/else。它分配sAfter_text子串从索引index + 1到索引_text.length - index或空字符串""依赖index < (_text.length-1)评价为True或False,在它们各自的顺序:

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