2

这很难解释;如果您不能理解我的问题,请在评论中问我。

请看下面的代码。首先,我从一个数组生成随机文本,然后我有两个div元素:currentolddiv。我想要实现的是当第一次按下开始按钮时,任何随机文本都可以显示在div 中currentold当第二次按下开始按钮时,old div应该显示第一次出现的任何文本,current div并且任何随机文本都显示在旧 div 中,然后循环继续。

我尝试old使用 0 进行初始化,但它显示为undefined内部函数。

<script>
    function randomFromTo(from, to) {
        return Math.floor(Math.random() * (to - from + 1) + from);
    }
    var arrstring = new Array("images", "wallpaper", "photos", "vector",
        "designer", "wordpress", "jquery", "extjs", "scripting", "blogging", 
        "search", "tagging", "digital", "javascript", "server", "hosting",
        "social", "twitter", "graphic", "photoshop", "netbeans", "mysql",
        "apache", "iphone", "mobile", "android", "framework", "usability",
        "optimization", "interface", "developer");

    function random() {
        randomIndex = randomFromTo(0, arrstring.length - 1);
        return randomIndex;
    }

    var old = 0;
    function start() {
        var all = old;
        var old = random();
        $(".current").text(arrstring[all]);
        $(".old").text(arrstring[old]);
    }
</script>

<div class="current">old</div>
<div class="old">new</div>

<input type="button" onclick="start();" value="start" />
4

5 回答 5

2

大家好,我自己解决了问题,我刚刚删除了 var 并且它成功了

 function start()
    {
    all = old;
    old = random();
    $(".current").text(arrstring[all]);
    $(".old").text(arrstring[old]);

    }
于 2013-10-19T08:11:59.610 回答
2

这将以更清洁的方式为您提供相同的功能,但不会污染全局范围。

jsFiddle

function get_Random_String() {

    var arrstring = new Array("images", "wallpaper", "photos", "vector",
        "designer", "wordpress", "jquery", "extjs", "scripting", "blogging",
        "search", "tagging", "digital", "javascript", "server", "hosting",
        "social", "twitter", "graphic", "photoshop", "netbeans", "mysql",
        "apache", "iphone", "mobile", "android", "framework", "usability",
        "optimization", "interface", "developer");

    return arrstring[Math.floor(Math.random() * arrstring.length)];

}

function cycle_randoms() {
    $(".current").text($(".old").text());
    $(".old").text(get_Random_String());
}


$('input[value=start]').on('click', function () {
    cycle_randoms();
});
于 2013-10-19T08:21:37.317 回答
1

看来你很近了!只是有一些可变范围问题。尝试这样的事情:

function start() {
  var all = random();
  $(".current").text(arrstring[all]);
  $(".old").text(arrstring[old]);
  old = all;
}

http://jsfiddle.net/daCrosby/zbSDC/

于 2013-10-19T08:14:39.797 回答
0

使用具有相同名称的全局变量和局部变量..仅将 var 删除到局部变量..它将在该函数内部赋予不同的含义..

    var old = 1; // Global
    function start() {
    var all = old; //local
    var old = random(); //local..
    ..}
于 2013-10-19T08:23:09.583 回答
-1

请使用 jQuery 内置程序。

在将更改应用于 dom 之前,您应该使用 doc ready:

$(document).ready(function(){
       /*ALL JS CODE HERE.*/
    });

尝试使用 jQuery 事件监听器:

$("button").click(function(){
   /*here is 'start' function */
});

可选:将所有 js 代码放在code.js文件中,并将它们放在 head 部分中。

于 2013-10-19T08:19:53.313 回答