2010-05-20 54 views
0

看看這個例子的代碼,它不工作:Javascript不更改文檔?

<?xml version='1.0' encoding='UTF-8' ?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 

<head> 

<script type="text/javascript"> 
<!-- 

function moveMe() { 
     document.getElementById('moveme').top = 200; 
     document.getElementById('moveme').style.backgroundcolor = 'green'; 
     document.getElementById('writeme').innerHtml = 'abc'; 
     alert('called!'); 
} 


// --> 
</script> 


<style type="text/css"> 

.moveable { 
    position: absolute; 
    top: 30px; 
    left: 200px; 
    width: 100px; 
    height: 100px; 
    background-color: yellow; 
} 

#writeme { 
    background-color: red; 
    color: white; 
} 

</style> 


</head> 

<body> 

<div id="moveme" class="moveable" onClick="moveMe()"> 
<p id="writeme">Hello!</p> 
</div> 

</body> 

</html> 

當我點擊顯示警報文本,但沒有在文檔中改變。段落文本不會被覆蓋,div不會被移動...在FF和IE中測試它,也通過Firebug檢查DOM:奇怪的是新值寫入節點,但它們以粗體顯示,並且舊的價值觀仍然存在。 WTF?

我想我錯過了一些基本的東西。

回答

5
  • 非零長度需要單位, 「200」 丟失其單位
  • JavaScript是大小寫敏感的:backgroundColorinnerHTML
  • 既然你似乎是使用XHTML,你的腳本是commented out
+0

謝謝大家,那真是超級棒! 儘管取消註釋腳本似乎並不重要,但這是一篇很好的文章。 – egbokul 2010-05-20 09:19:43

2
document.getElementById('moveme').top = 200; 

必須

document.getElementById('moveme').style.top = "200px"; 

我想;和

document.getElementById('writeme').innerHtml = 'abc'; 

需要成爲

document.getElementById('writeme').innerHTML = 'abc'; 

,它是backgroundColor用大寫C爲@大衛發現第一。

0

試試這個:

<script type="text/javascript"> 

function moveMe() { 
     document.getElementById('moveme').style.top = '200px'; 
     document.getElementById('moveme').style.backgroundColor = 'green'; 
     document.getElementById('writeme').innerHTML = 'abc'; 
     alert('called!'); 
} 

window.onload = moveMe; 

</script> 
0

此外,對於其他人說什麼:丟棄<?xml version='1.0' encoding='UTF-8' ?> ,因爲這使IE在怪異模式。

+0

只有IE6,這實際上是爲了破壞代碼的好處(單元不需要在怪癖模式中)!這個答案真的應該是一個評論。 – Quentin 2010-05-20 10:00:03