2011-02-25 79 views
0

我正在寫JavaScript到我的網頁,但有一些函數和循環,我認爲所有頁面都運行,所以第一個正在運行,並在第二頁上失敗。正因爲如此,第二頁上的JavaScript函數沒有運行。如何使我的功能成爲頁面特定或div ID特定?

任何人都可以給我一個如何創建頁面特定的功能或檢查ID的可用性的想法嗎?我沒有使用任何框架。

在此先感謝。

我的JavaScript代碼是:

window.onload = function(){ 
    var yellows = document.getElementById('magazine-brief').getElementsByTagName('h2'); 
    var signUp = document.getElementById('signup-link');  
    function animeYellowBar(num){ 
     setTimeout(function(){ 
      yellows[num].style.left = "0"; 

      if(num == yellows.length-1){ 
       setTimeout(function(){ 
        signUp.style.webkitTransform = "scale(1)"; 
       },num * 250); 
      } 
     }, num * 500); 
    } 
    for (var i = 0; i < yellows.length; i++){ 
     animeYellowBar(i); 
    } 

    alert("alert second page"); 
} 

在這段代碼中,警報消息不靈第二頁上。任何想法?

回答

0

最好的辦法是隻在需要它們的頁面上包含這些腳本。爲什麼浪費時間加載和解析腳本不需要?

如果您必須將它們保留在每個頁面上,請將您的函數放在if語句中,並檢查頁面的唯一需要它們的內容(例如表單元素或字段ID)。

更新

在回答您的評論:

你有更多的防禦性代碼。在確定它們存在之前,您正試圖使用​​magazine-briefsignup-link元素。永遠不要相信正確的元素被返回 - 在嘗試使用該元素之前總是檢查它是否已被返回。

我建議檢查您的增值經銷商像這樣:

var yellows = document.getElementById('magazine-brief').getElementsByTagName('h2'); 
var signUp = document.getElementById('signup-link'); 

if (yellows != 'undefined' && signUp != undefined) 
{ 
    function animeYellowBar(num) 
    { 
     //... 
    } 
} 
+0

是的,你是正確的,但我無法實現,你能幫助我嗎? – 3gwebtrain 2011-02-25 14:01:51

+0

@ 3gwebtrain:Rob的聲明不僅僅是JS的正確之處。您應該始終檢查數據爲空,無論是JavaScript中的DOM元素還是數據庫中的記錄集。如果你不檢查空值,這意味着你的程序會很快並且經常崩潰。 – Jordan 2011-02-25 14:55:33

0

如果我理解正確的話,你有一個JavaScript函數,你想從你的網頁中的特定div元素附加到事件。

一)包括直接的事件對你的HTML頁面,這樣的事情:

<div id="element" onclick="some_function();">Text is here</div>

B)使用JavaScript函數(添加<script>標籤之間的代碼):

window.onload = function() { 
    document.getElementById("element").setAttribute("onclick", "some_function()") 
}