在javascript中调用随机函数

时间:2014-08-15 18:05:21

标签: javascript

所以我的JavaScript代码有问题。随机的东西不起作用:/你觉得这个问题是什么?

我有两个“幻灯片放映”但是如果我点击第一张图片来启动幻灯片它不能正常工作

 <script type="text/javascript">
    $(document).ready(function() {

   function elso() { 
        $(".start").click(function() {
        $.when($('.start2').show().delay(2000)).done(function() {
            $.when($('.start3').show().delay(2000)).done(function() {
                $.when($('.start4').show().delay(2000)).done(function() {
                    $.when($('.start5').show().delay(2000)).done(function() {
                        $(".start").hide();
                        setTimeout(function() {
                            $(".start").show();
                            $(".start2, .start3, .start4, .start5").hide();
                        }, 2000);
                    });
                });
            });
        });
    });
    }

       function masodik () { 
        $(".start").click(function() {
        $.when($('.start2').show().delay(2000)).done(function() {
            $.when($('.start3').show().delay(2000)).done(function() {
                $.when($('.start4').show().delay(2000)).done(function() {
                    $.when($('.start5').show().delay(2000)).done(function() {
                        $(".start").hide();
                        setTimeout(function() {
                            $(".start").show();
                            $(".start2, .start3, .start4, .start5").hide(); 
                        }, 2000);
                    });
                });
            });
        });
    });
    }

 function randomFrom(array) {
  return array[Math.floor(Math.random() * array.length)];
}
function randomchords() {
  // add the 'window' prefix here
  randomFrom(window['elso', 'masodik'])();
}

});


  </script>

1 个答案:

答案 0 :(得分:2)

您无法使用window访问这些功能,因为它们不是全球性的。此外,这将是[window.elso, window.masodic][window['elso'], window[masodic]]而不是window['elso', 'masodik']

这些功能在范围内,因此您只需使用其名称即可访问它们。只需创建一个包含函数引用的数组,然后从中选择:

function randomchords() {
  randomFrom([elso, masodik])();
}