2010-07-24 40 views
0

這在我的瀏覽器中不起作用 - 這是正常的嗎?它只適用於我在函數someFunc範圍內聲明文檔Object的別名。我可以爲函數範圍外的文檔對象定義別名嗎

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

var someFunc = function() { 

    pic1.style.left = "100px"; 
} 
+1

我看不錯,應該工作,假設id爲'」元素後,正在執行的整個代碼示例pic1「'在文檔中聲明。 – 2010-07-24 16:11:15

+0

你仍然需要調用'someFunc'。你真的在你的代碼中調用它嗎? – Oded 2010-07-24 16:14:33

回答

0

是的。您只需確保在頁面上加載了pic1元素後,即致電someFunc。在該說明中,最好的做法是在關閉body標記之前將JavaScript放在右下角。

了檢查你的代碼在行動 - http://jsfiddle.net/dga9k/1/

+0

該標準指定腳本放在頭部,所以這將是最佳實踐。把腳本放在身體上有不同的原因,但這不應該是第一種選擇。 – Guffa 2010-07-24 17:20:54

+0

非常好的例子,謝謝!扼殺在我的應用程序它不起作用。我會做更多的測試。 – nottinhill 2010-07-24 17:22:11

+0

@Guffa,用HTML規範中的行註釋說'腳本'在頭上。我明白這是常見的做法。然而,在我10年的網絡開發中,我沒有在規範中遇到過這個問題,也沒有W3C驗證錯誤或警告。 – 2010-07-24 18:35:39

1

這不是一個範圍問題。可能的原因是,您正在嘗試在元素創建之前獲取元素的引用。你必須等待,直到元素加載之前就可以使用onload事件訪問它,例如:

<html> 
<head 
<title>Test</title> 
<script> 

function init() { 

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

    var someFunc = function() { 
    pic1.style.left = "100px"; 
    }; 

    someFunc(); 

} 

</script> 
</head> 
<body onload="init();"> 
<div id="pic1"></div> 
</body> 
</html> 
相關問題