0

我对学习 JavaScript 的追求非常陌生(仅两周),所以请对我取得的进步感到惊讶和惊讶。

我想要做的是点击一个按钮,该按钮将唤起一个随机图像或 div 来到前面。如您所见,我通过将元素从后向前移动来使用 z-index。

我已经足够远,可以创建一个警报,告诉我它确实找到了随机功能,只是无法让它激活这个功能(当我将它分配给一个按钮时,changeCombined 功能确实可以正常工作,但无法让 getImage 运行)。

我不确定这是否可能,而且我知道可能有一百种更好的方法可以做到这一点,但一次只需要一步。

function changeZIndex(i,id) {
    document.getElementById(id).style.zIndex=i;
};

var changeCombined1 = function() {
    changeZIndex(-5,"scene1");
    changeZIndex(5,"scene2");
};  

var changeCombined2 = function() {
    changeZIndex(-5,"scene2");
    changeZIndex(5,"scene1");
};

function get_random(){
    var ranNum= Math.floor(Math.random()*2);
    return ranNum;
}

function getImage(){
    var whichImage=get_random();
    var image=new Array()
    image[0]=changeCombined2;
    image[1]=changeCombined1;

    alert(quote[whichImage]);
}
4

4 回答 4

1

尝试这个:

function changeZIndex(i,id) {
    document.getElementById(id).style.zIndex=i;
};

function getImage(){
    var whichImage=Math.floor(Math.random()*2);
    var image=new Array()
    image[0]=function() {
        changeZIndex(-5,"scene2");
        changeZIndex(5,"scene1");
    };
    image[1]=function() {
        changeZIndex(-5,"scene1");
        changeZIndex(5,"scene2");
    };

    image[whichimage]();

    alert(quote[whichImage]);
}
于 2012-08-08T21:27:20.540 回答
0

您根本没有调用这些changeCombined()函数。

如果您尝试调用这些函数,则必须使用()

image[0]=changeCombined2();
image[1]=changeCombined1(); 

你所拥有的只是函数本身image[0]image[1]。所以之后

x = changeCombined2;

x将持有对changeCombined2 函数本身的引用。所以现在如果你说x()(或者在你的情况下image[0]()),它会调用 changeCombined2.

()将调用函数并将函数的返回值放入数组元素中。

注意:因为函数没有显式返回任何东西,image[0]并且image[1]会持有undefined.

于 2012-08-08T21:21:59.433 回答
0

感谢所有帮助克服我的障碍,不调用我的函数的新手错误是最大的问题。我能够蒙太奇评论以创建按预期工作的这个版本。

function changeZIndex(i,id) { 
    document.getElementById(id).style.zIndex=i;}; 

function getImage(){ 
    var whichImage=Math.floor(Math.random()*2); 

    var image=new Array() 

    image[0]=function() { 
    changeZIndex(-5,"scene2"); 
    changeZIndex(5,"scene1"); 
    }; 

    image[1]=function() { 
    changeZIndex(-5,"scene1"); 
    changeZIndex(5,"scene2"); 
    }; 

    image[whichImage].apply(undefined);}; 
于 2012-08-09T14:19:54.930 回答
0

要调用函数,您应该使用applycall方法。

你试过image[whichImage].apply(undefined)而不是你的alert吗?

于 2012-08-08T21:24:58.993 回答