【问题标题】:What do these lines of code do?这些代码行有什么作用?
【发布时间】:2017-10-06 16:28:02
【问题描述】:

我是编程新手,我正在尝试用 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) : "";

我特别困惑的是这些变量的确切设置

【问题讨论】:

  • 第一行调用substr(),用于获取字符串的一部分。第二行是一个ternary expression,它是一个浓缩的if 条件。
  • 有时理解代码的最佳方法是使用 JS 调试器,例如,在有问题的行之前放置 debugger 语句,然后在 JS 控制台中进行试验。

标签: javascript jquery strikethrough


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    这一行将sToStrike 的子字符串_text 从索引0 分配给索引index + 1:

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

    这一行包含一个三元表达式,它是一个内联 if/else。它将sAfter 分配给索引index + 1 中的_text 的子字符串到索引_text.length - index 或取决于index &lt; (_text.length-1) 评估为True 或False 的空字符串"",按照它们各自的顺序:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-27
      • 2011-12-31
      相关资源
      最近更新 更多