2012-08-08 70 views
0

我對學習JavaScript(僅兩個星期)的要求非常新,所以我很高興和驚訝得到了多少。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]); 
} 
+0

你實際上並沒有調用函數 – PitaJ 2012-08-08 21:26:04

+0

getImage()中'image'數組的意圖是什麼?因爲它們更新了相同的元素,所以同時運行'changeCombined1'和'changeCombined2'沒有意義。數組'quote'(用於'alert(quote [whichImage])')定義在哪裏? – nnnnnn 2012-08-08 21:29:54

回答

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

+2

...除了'changeCombined1()'和'changeCombined2()'不返回任何有用的東西... – 2012-08-08 21:23:48

+1

@Cory - 當然,他們確實會返回undefined。 – nnnnnn 2012-08-08 21:25:17

+0

@nnnnnn:精神!編輯評論。 – 2012-08-08 21:27:18

0

要調用函數,您應該使用applycall方法。您是否試過image[whichImage].apply(undefined)而不是alert

+0

這似乎是一種非常複雜的方式來說'image [whichImage]()',特別是如果你只是想傳入'undefined'。 – nnnnnn 2012-08-08 21:27:23

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]); 
} 
0

感謝所有幫助,讓過去我的路障,不叫我funcions的新手的錯誤是最大的問題。我能夠根據預期創建此版本的蒙太奇評論。

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);};