2011-02-25 44 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()") 
} 
相关问题