這在我的瀏覽器中不起作用 - 這是正常的嗎?它只適用於我在函數someFunc範圍內聲明文檔Object的別名。我可以爲函數範圍外的文檔對象定義別名嗎
var pic1 = document.getElementById('pic1');
var someFunc = function() {
pic1.style.left = "100px";
}
這在我的瀏覽器中不起作用 - 這是正常的嗎?它只適用於我在函數someFunc範圍內聲明文檔Object的別名。我可以爲函數範圍外的文檔對象定義別名嗎
var pic1 = document.getElementById('pic1');
var someFunc = function() {
pic1.style.left = "100px";
}
是的。您只需確保在頁面上加載了pic1
元素後,即致電someFunc
。在該說明中,最好的做法是在關閉body
標記之前將JavaScript放在右下角。
了檢查你的代碼在行動 - http://jsfiddle.net/dga9k/1/
該標準指定腳本放在頭部,所以這將是最佳實踐。把腳本放在身體上有不同的原因,但這不應該是第一種選擇。 – Guffa 2010-07-24 17:20:54
非常好的例子,謝謝!扼殺在我的應用程序它不起作用。我會做更多的測試。 – nottinhill 2010-07-24 17:22:11
@Guffa,用HTML規範中的行註釋說'腳本'在頭上。我明白這是常見的做法。然而,在我10年的網絡開發中,我沒有在規範中遇到過這個問題,也沒有W3C驗證錯誤或警告。 – 2010-07-24 18:35:39
這不是一個範圍問題。可能的原因是,您正在嘗試在元素創建之前獲取元素的引用。你必須等待,直到元素加載之前就可以使用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>
我看不錯,應該工作,假設id爲'」元素後,正在執行的整個代碼示例pic1「'在文檔中聲明。 – 2010-07-24 16:11:15
你仍然需要調用'someFunc'。你真的在你的代碼中調用它嗎? – Oded 2010-07-24 16:14:33