2012-08-23 48 views
1

我有這個javascript函數來觸發身體onload函數,但我不能讓它工作。我在這裏做錯了什麼?這裏是我下面的fiddle和代碼:簡單的身體onload函數不會觸發我的功能

HTML:

<body onload="loading()"> 
    <div id="container"> 
    </div> 
</body> 

JS:

function loading(){ 
    document.getElementById('container').css("background-image", "none"); 
} 

也試過

function loading(){ 
    document.getElementById('container').cssText = "background-image: none"; 
} 

CSS:

body{ 
    background: #000; 
} 
#container { 
width: 600px; 
height: 500px; 
margin:0 auto; 
background-image: url("http://lamininbeauty.co.za/images/gallery/loading.png"); 
background-repeat: no-repeat; 
background-position: 50% 50%; 
}​ 

回答

1

getElementById返回一個html元素,它沒有方法.css()。它的jQuery擁有該方法,你也可以在onload中使用它的函數,所以它包裝在一個函數中,你希望它沒有包裝頭。

http://jsfiddle.net/3pDsJ/35/

+0

是啊,剛剛意識到,以及,謝謝 –

+0

你是第一個指出,我是用錯了框架一直 –

1
function loading(){ 
    document.getElementById('container').style.backgroundImage = "none"; 
} 
+0

謝謝你,感謝你的回答。你是對的,我實際上嘗試過,但我的小提琴框架設置錯誤 –

2

嘗試:

function loading(){ 
    document.getElementById('container').style.backgroundImage= "none"; 
} 
+0

謝謝,但不,不,不工作...看看我的JS小提琴 –

+0

它的工作,但不是在小提琴,因爲onload不是被解僱。嘗試在你自己的頁面而不是小提琴。 – j08691

+0

試試這個在onload上運行它的小提琴:http://jsfiddle.net/j08691/vBY5Z/ – j08691

2

你是混亂的本地JavaScript和jQuery,沒有css方法對本地DOM元素:

function loading(){ 
    document.getElementById('container').style.backgroundImage = "none"; 
} 
+0

時間工作謝謝,感謝...無包裝(頭)始終是我的問題,因爲我一直嘗試.style.backgroundImage .... –

1

確保您的JS在部分加載你的頁。

或者,你可以只添加

$(function() { 
$('#container').css("background-image", "none"); 
} 
在你的js

,並從身體

我假設你正在使用jQuery刪除onload事件,否則上述方案是去

方式
1

的問題是,的jsfiddle設置來運行你定義的JavaScript onLoad所以我懷疑正在發生的事情是它遇到已定義的loading()方法之前你onload=屬性。如果你打開一個控制檯,你可以看到一個錯誤「Uncaught ReferenceError:loading is not defined」(或類似的東西)。

你可以改變它爲「無包裝(頭)」,它應該工作得很好。雖然如上所述,您需要將css方法更改爲實際可行的方法。

我想說一個簡單的解決方案就是使用jquery。使用元素的onload處理程序不再被認爲是好的做法(我認爲它們現在已被棄用)。最好的解決方案是一個名爲「不顯眼的JavaScript」,其中你執行的任何js不需要額外的javascript或方法調用從你的html代碼。我已經修改了小提琴舉個例子:

http://jsfiddle.net/3pDsJ/38/

+0

謝謝,欣賞...無包裝(頭)是我的問題所有的時間,因爲我沒有嘗試.style.backgroundImage .... –

+0

謝謝你的努力 –

0

我還沒有看到一個答案是,你的腳本標籤必須是你的身體標籤內。這是因爲腳本標記必須在主體加載之前加載,否則會出現錯誤,指出加載功能未定義。

<!DOCTYPE html> 
<html> 
<head> 
    <link rel="stylesheet" href="YourCSS.css" /> 
</head> 
<body onload="loading()"> 
    <div id="container"> 
    </div> 
    <script type="text/javascript"> 
     function loading(){ 
      $("#container").attr("style", "background-image: none;"); 
     }; 
    </script> 
</body> 
</html> 
+0

是的謝謝,但被引用到我的JSfiddle,在我的網站上我確實有它在body元素 –

+0

其實真正的問題是'loading()'函數必須在''標記呈現。無論您是將其保存在,還是外部js文件中,並將其從中加入,或者您只需在body標籤中的