【问题标题】:Javascript or JQuery not understanding [closed]Javascript或JQuery不理解[关闭]
【发布时间】:2016-11-09 03:48:31
【问题描述】:

我对前端编程非常陌生,有时我不明白 javascript 和 jquery 的快捷方式的含义。我有一些代码模板要处理,但我不清楚它是如何工作的,如下所示。

请您帮我通读文章以了解 js 文件中的这些定义。

提前谢谢你。

我有这样的东西。我只想知道它是如何工作的!我没有明确的想法。

1

for (var e = document.getElementsByTagName("div"), t = 0; t < e.length; t++) 
    "fish" == e[t].getAttribute("class") && fishArray.push(e[t])

2.

"vertical" == layersMovement ? (balloonDiv.style.left = o + "px", robbyContainerDiv.style.left = n + "px") : "not moving 1" == layersMovement ||
"not moving 2" == layersMovement ? (robbyContainerDiv.style.left = n + pageVerticalPosition - (pageDiv.offsetHeight - containerDiv.offsetHeight - distanceBetweenRobbyAndBalloon) + "px",

balloonDiv.style.left = o + "px") : (balloonDiv.style.left = layerHorizontalArray[layerHorizontalArray.length - 1].offsetLeft + layerHorizontalArray[layerHorizontalArray.length - 1].offsetWidth - .5 * (containerDiv.offsetWidth + balloonDiv.offsetWidth) + "px",
robbyContainerDiv.style.left = "50%")

【问题讨论】:

  • 请格式化您的代码以便我们为您提供帮助
  • 说实话,代码写得很糟糕,其中一些是无用的和/或没有意义的。我们甚至不知道这段代码的目标,我们怎么知道它应该做什么或者它是否正确?
  • 仔细查看这些页面:jQueryjavascript ;)
  • 正确且工作正常。在代码中,他们到处都使用了这种函数。让我给你一个函数。
  • function setLayersMovement() { layersMovement = pageVerticalPosition * layerHorizo​​ntalSpeedArray[layerHorizo​​ntalSpeedArray.length - 1] = pageDiv.offsetHeight - containerDiv.offsetHeight - distanceBetweenRobbyAndBalloon && pageVerticalPosition = pageDiv.offsetHeight - containerDiv.offsetHeight ? "不动 2" : "垂直" }

标签: javascript jquery html frontend javascript-objects


【解决方案1】:

将其转换为更简洁的代码将有助于您理解:

for (var e = document.getElementsByTagName("div"), t = 0; t < e.length; t++) "fish" == e[t].getAttribute("class") && fishArray.push(e[t])

清理代码:

var e = document.getElementsByTagName("div");

==> 定义 e 来保存所有 div 元素

for (var t = 0; t < e.length; t++)

==> 为 e 中的每个 div 元素循环。 for 语句的第一部分可用于初始化变量。例如:for (var a = 0, b = 2, c = 3; a &lt; b; a++) 这就是原代码在for 语句中定义 e 的原因。

"fish" == e[t].getAttribute("class") && fishArray.push(e[t])

==> a && b 评估 a 并且如果评估结果为真,则执行 b。这是if (a) { b; } 的快捷方式。该语句中,如果当前div的class属性为'fish',则将div的引用推入fishArray数组。

换句话说,代码可以写得更干净:

var e = document.getElementsByTagName("div");
for (var t = 0; t < e.length; t++) {
    var currentDiv = e[t];
    if ("fish" == currentDiv.getAttribute("class")) {
        fishArray.push(e[t]);
    }
}

第二个代码:

"vertical" == layersMovement ? (balloonDiv.style.left = o + "px", robbyContainerDiv.style.left = n + "px") : "not moving 1" == layersMovement || "not moving 2" == layersMovement ? (robbyContainerDiv.style.left = n + pageVerticalPosition - (pageDiv.offsetHeight - containerDiv.offsetHeight - distanceBetweenRobbyAndBalloon) + "px", balloonDiv.style.left = o + "px") : (balloonDiv.style.left = layerHorizontalArray[layerHorizontalArray.length - 1].offsetLeft + layerHorizontalArray[layerHorizontalArray.length - 1].offsetWidth - .5 * (containerDiv.offsetWidth + balloonDiv.offsetWidth) + "px",
robbyContainerDiv.style.left = "50%")

解释: 第二个代码包含嵌套条件。
以下:a ? b : c 等于:if (a) { b; } else { c; }
我可以写a, b, c; 来执行a,然后是b,然后是c(a; b; c;)。
使用这两个规则,获取该代码块并重写它,以便您可以理解它。

顺便说一句,我相信你在看minified code

希望有帮助!

【讨论】:

  • 我不认为这是缩小代码。考虑空格和变量名。
  • "fish" == e[t].getAttribute("class") && fishArray.push(e[t]) 如果我有 ||介于两者之间。??
  • 一个 ||只有当 a 为真时,b 才会执行 b。否则 b 不会被执行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-13
相关资源
最近更新 更多