【问题标题】:Javascript div fade based on position基于位置的Javascript div淡入淡出
【发布时间】:2012-08-09 18:23:03
【问题描述】:

我想单击一个 div 并让它和其他 div 一个接一个地淡出。我希望一个 div 褪色和下一个 div 褪色之间的时间与 div 之间的距离成正比。

所有这些 div 都是更大 div 的子级。

我有可以淡化 div 的代码。我现在正在尝试编写一个函数,它会查看每个像素的父 div 的宽度,并在遇到它们时淡化任何 div。

这里是javascript:

function sweep(){
    var n3_position = #note_3.position();
    for (i=0;i<900;i++){
        if n3_position.left == i {
            fade('note_3');
        }
    }
}
function fade(el){
    setTimeout(function(){
        $(el).fadeOut("slow",function(){
            document.getElmentById(el).style.display="none";
        }); 
    }, 100);
}

这是相关的 HTML:

<a onclick="sweep()"><div id="note_1"></div></a>

因此,一旦 for 循环变量 i 等于第三个音符左侧的 x 位置,单击第一个音符(div 是音符)应该会导致第三个音符消失。最终,sweep() 将为所有 div 位置创建变量并检查它们中的每一个,但现在,为了测试,它只是这个。父 div 是 900px 宽,所以这就是 for 循环上限的原因。

现在发生的一切都不算什么。

感谢所有帮助。提前感谢您的专家帮助。

-Oijl

【问题讨论】:

  • 您的代码存在一些问题。一开始你调用fade('note_3'),但在淡入淡出函数中你有$(el),它不会工作,因为它缺少id选择器#

标签: javascript function loops position


【解决方案1】:

我认为您的第一个函数有一些错误。试试下面的方法,看看是否更适合你。

function sweep(){
    var n3_position = document.getElementById('note_3').offsetLeft;
    for (i=0;i<900;i++){
        if (n3_position == i) {
            fade('note_3');
        }
    }
}

您在循环中的 if 条件周围缺少括号。此外,#note_3 不会返回元素,因此它是无效的。

另外,第二个函数中还有一些错误。下面是一些可以帮助您入门的内容:

function fade(el){
    setTimeout(function(){
        $('#' + el).fadeOut("slow");
    }, 100);
}

您缺少“#”,因为您通过 Id 引用元素。此外,您可能不需要将显示样式更改为 none,因为 fadeOut 方法会为您处理。

【讨论】:

  • 谢谢。实际上,我最终使用了一个更简单的解决方案,但是您帮助了我一些语法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-09-27
  • 2020-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多