【问题标题】:Conditional inside for loop not passing. Why?条件内部 for 循环不通过。为什么?
【发布时间】:2013-01-01 09:31:01
【问题描述】:

我不知道出了什么问题,请帮忙。

新的 Num 被传入,控制台日志显示它正在为 activeSlide 找到正确的元素

var activeSlide = $("#ep"+newNum);

for (var i=0; i< allSlides.length; i++){

    var slidegrab = $("#ep"+i);

    console.log(slidegrab == activeSlide)
    if (slidegrab == activeSlide){
        console.log("stop loop and stop shuffle");
        return;
    } else {
        slidegrab.appendTo('#slideshow');
    }
}

我的控制台将为 slidegrab 和 activeSlide 变量显示正确的名称。对于每个循环,条件将显示为假,从不为真。我错过了什么?

谢谢!!

【问题讨论】:

  • 它们可能是两个不同的 jQuery 包装器。您可能必须按 ID 比较它们?
  • 你为什么不比较newNumi呢?
  • 你的 console.log 应该给你 truefalse

标签: javascript jquery for-loop conditional-statements


【解决方案1】:

它们是两个不同的 jQuery 对象。您需要比较 DOM 元素。

slidegrab[0] === activeSlide[0]

或者您可能想按索引而不是按元素跟踪当前幻灯片。这更常见。

【讨论】:

  • 谢谢,这些小事让我受益匪浅……我是一个写 javascript 的 actionscripter。我会考虑使用索引,无论如何优化可能更好。
【解决方案2】:

您可以比较 id 而不是包装器:

var activeSlide = $("#ep"+newNum);

for (var i=0; i< allSlides.length; i++){

    var slidegrab = $("#ep"+i);

    if (newNum== i){
        console.log("stop loop and stop shuffle");
        return;
    } else {
        slidegrab.appendTo('#slideshow');
    }
}

【讨论】:

  • 根据变量的名称会很混乱!
猜你喜欢
  • 2016-08-31
  • 2019-06-13
  • 1970-01-01
  • 2019-07-23
  • 1970-01-01
  • 2016-12-26
  • 1970-01-01
  • 1970-01-01
  • 2013-02-05
相关资源
最近更新 更多