關于高亮設置的疑問
我想直接在tr上綁定onmouseover和onmouseout事件
<tr onmouseover="mouse(this)">
然后
function mouse(obj){
? ?obj.style.backgroundColor ="#f2f2f2";
? ?}
window.onload = function(){
mouse();
} ?
做了這些改動之后
會報錯
Uncaught TypeError: Cannot read property 'style' of undefined
哪位大神給解答一下。
2016-07-27
你的mouse方法調(diào)用的時候需要參數(shù)啊,
2016-07-27
要解決這個問題,首先要了解window.onload到底是什么?
window.onload用法詳解:
網(wǎng)頁中的javaScript腳本代碼往往需要在文檔加載完成后才能夠去執(zhí)行,否則可能導致無法獲取對象的情況,為了避免這種情況的發(fā)生,可以使用以下兩種方式:
一.將腳本代碼放在網(wǎng)頁的底端,這樣在運行腳本代碼的時候,可以確保要操作的對象已經(jīng)加載完成。
二.通過window.onload來執(zhí)行腳本代碼。
第一種方式感覺比較凌亂(其實推薦使用),往往我們需要將腳本代碼放在一個更為合適的地方,那么window.onload方式就是一個良好的選擇。window.onload是一個事件,當文檔加載完成之后就會觸發(fā)該事件,可以為此事件注冊事件處理函數(shù),并將要執(zhí)行的腳本代碼放在事件處理函數(shù)中,于是就可以避免獲取不到對象的情況。
----------------------------------來自http://www.softwhy.com/forum.php?mod=viewthread&tid=6191
因為是順序加載的,所以有些對象未加載完程序就不能執(zhí)行,所以才使用window.onload,但是在這題在調(diào)用事件onmouseover時tr已經(jīng)加載,所以不需要用到window.onload。刪掉就可以解決。
還有一種就是如果你是要一開始初始化背景的話,那么請把
window.onload = function(){
mouse(); ?//改為mouse(document.getElementById("tr")) ?<-這里為了方便給tr加了id“tr”
} ?
因為你要調(diào)用函數(shù)要注意,這個函數(shù)需不需要給他實際參數(shù),如果不給的話就會出錯,比如Uncaught TypeError: Cannot read property 'style' of undefined 這個,因為沒有對象,所以它的style自然是undefined
實現(xiàn)出來:
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title> </title>
<script type="text/javascript">
function mouse(obj){
? ?obj.style.backgroundColor ="red";
? ?}
window.onload = function(){
mouse(document.getElementById("tr"));
}
</script>
</head>
<body >
<table>
<tr id="tr" onmouseover="mouse(this)">
<th>dadadsdasdd</th>
<tr>
</table>
</body>
</html>
2016-07-27
window.onload = function(){mouse();} ?會在頁面加載之后執(zhí)行mouse()方法,你沒有傳遞任何參數(shù)
function mouse(obj){obj.style.backgroundColor ="#f2f2f2";}這個方法接受一個參數(shù),改變參數(shù)對象的style背景樣式,而你沒有傳入這個參數(shù),那么方法里默認obj為undefined; ?就跟你var聲明了一個參數(shù),卻沒有初始化一樣。找不到對象,不知道操作誰去,自然報錯