2012-12-16 163 views
0

我試圖使用一個變量來保存一個HTML ID,所以我不必一次又一次地寫getElementById。但我無法得到這個工作。這裏是我的代碼:訪問函數內部的JavaScript變量

var box1 = document.getElementById('box1'); 

function slide4(){ 
    box1.style.width='10%'; 
} 

它的工作原理,如果我把函數內部的變量,但是,似乎是不好的做法,因爲我想訪問其他函數的變量,並且不希望保留聲明變量過來,再次。

function slide4(){ 
    var box1 = document.getElementById('box1'); 
    box1.style.width='10%'; 
} 

任何想法?

+0

的財產你說你不能得到這個工作。當你嘗試時究竟發生了什麼? –

+1

必須是範圍問題。嘗試聲明不帶var關鍵字的變量,看看它是否有效 – kennypu

+0

你可以發佈你所有的代碼嗎? – jackcogdill

回答

1

我想你已經加載之前訪問DOM。試試這個:

var box1; 

window.onload = function() { 
    box1 = document.getElementById('box1'); 
} 

function slide4() { 
    box1.style.width = '10%'; 
} 
+0

工作。謝謝! – maiamachine

0

你應該確保頁面被加載後BOX1初始化運行。 因此,一個解決辦法是這樣的:

var box1 = null; 
window.onload = function(){ 
    box1 = document.getElementById('box1'); 
} 

另一種解決方案是創建一個功能,而不是變量,並使用它,只要你想:

function BoxID(){ 
    return document.getElementById('box1'); 
} 

當然,如果你使用jQuery庫,只要你想,你可以使用:

$("#box1") 
0

我會建議你傳遞變量作爲自變量:

var box1 = document.getElementById('box1'); 

function slide4(box){ 
    box.style.width='10%'; 
} 

也可以定義變量不var,這將使它window對象

box1 = document.getElementById('box1'); 
alert(window.box1);