【问题标题】:Change text on mousein/out with an array randomly?用数组随机更改鼠标输入/输出上的文本?
【发布时间】:2012-10-21 14:25:16
【问题描述】:

我有一个非常简单但令人沮丧的问题。基本上我想要做的是当你鼠标输入和输出特定元素时,元素文本将通过数组随机更改。这是我的代码,从 HTML 开始:

<div class="logo">
    <a href="#">
        luke <span>whitehouse</span> 
    </a>
    <span class="logo-note">// front-end web designer</span>
</div>

这是 JS:

$(document).ready(function() {
    var quotes = new Array("foo", "bar", "baz", "chuck");
    var randno = Math.floor ( Math.random() * quotes.length );
    $('.quote').add(quotes[randno]);

    $('.logo a').mouseover(function() {
        $('.logo-note').text(quotes[randno]);
    }).mouseout(function() {
        $('.logo-note').text(quotes[randno]);
    });
});

【问题讨论】:

    标签: jquery arrays random mouseover mouseout


    【解决方案1】:

    当鼠标悬停/移出事件发生时,您需要获取随机文本。在您的代码中,randno 计算一次并且永远不会更改,因此您每次都会得到相同的数组元素。试试这个想法

    $('.logo a').mouseover(function() {
            $('.logo-note').text(quotes[Math.floor ( Math.random() * quotes.length )]);
        }).mouseout(function() {
            $('.logo-note').text(quotes[Math.floor ( Math.random() * quotes.length )]);
        });
    

    【讨论】:

    • 嗨,Satyajit,感谢您的出色回应。这确实解决了大部分问题,但是现在唯一的问题是,如果选择器中有任何子标签(在本例中为“.logo a”,但我已经更改了一些部分,所以它现在只是“.logo”,然后是脚本再次运行,发现一个新的数组号。有没有办法防止这种情况发生?
    • 你能更详细地解释一下吗?也许展示您的新 HTML 以及需求如何变化。听起来对于某些您不想要随机文本的元素 - 是吗?
    • 嗨伙计,我已经为你创建了一个代码笔。基本上,当您将鼠标悬停在 .logo 上时,它可以正常工作,但是,当您也将鼠标悬停在其中的嵌套元素上时,即“a”标签,它会再次运行脚本。 codepen.io/anon/pen/ovaHg
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-27
    • 2015-03-05
    • 1970-01-01
    • 2022-01-22
    相关资源
    最近更新 更多