1

我有一个包含window.onload在顶部的外部 js 文件。当我单击单独 HTML 文件中的按钮时,我想在control.next()内部调用函数。window.onload

window.onload = function() {

 control = {

    margin: function(n) {
        sliderContent.style.marginLeft = '-' + n + '00%';
    },

    prev: function() {
        (n === 0) ? n = (slideCount - 1) : n--;
        control.margin(n);
    },

    next: function() {
        alert("next");
        (n < slideCount - 1) ? n++ : n = 0;
        control.margin(n);
    },

    slide: function() {
        move = setInterval(function(){
            (n < slideCount - 1) ? n++ : n = 0;
            control.margin(n);
        }, 4000)
    }
 }

}

按钮代码为:

<button class="xy" onclick="">next</button>

您还可以在 http://jsfiddle.net/gLPhr/2/上查看小提琴

4

3 回答 3

0

将控制变量保持在外部,只需在 onload 处理程序中调用您需要的方法。

变量控制 = {

margin: function(n) {
    sliderContent.style.marginLeft = '-' + n + '00%';
},

prev: function() {
    (n === 0) ? n = (slideCount - 1) : n--;
    control.margin(n);
},

next: function() {
    alert("next");
    (n < slideCount - 1) ? n++ : n = 0;
    control.margin(n);
},

slide: function() {
    move = setInterval(function(){
        (n < slideCount - 1) ? n++ : n = 0;
        control.margin(n);
    }, 4000)
}  

}

window.onload = control.next

于 2013-07-10T17:50:41.717 回答
0

control由于s 范围在 anonymouys 函数内,因此您尝试执行的操作是不可能的。我没有看到您需要该onload事件,将其删除,您的代码应该可以正常工作。

于 2013-07-10T17:47:28.653 回答
0

你只需要暴露控制对象,是吗?

var control;

window.onload = function() {

 control = {
...

否则,control作用域为window.onload,外部无法看到。

顺便说一句,不确定小提琴是否在您想要的位置。

于 2013-07-10T17:47:58.370 回答