秒外部JavaScript文件没有加载

问题描述:

我在我的HTML头中秒外部JavaScript文件没有加载

<script type="text/javascript" src="../behaviour/location.js"></script> 
<script type="text/javascript" src="../behaviour/ajax.js"></script> 

这些线当我使用无论单独地,在外部文件中的代码按预期执行。

但是,当我同时使用时,我发现这两个都不正确。我需要做些什么来解决这个问题?

location.js

// JavaScript Document 

function addLoadEvent (func) { 
    var oldonload = window.onload; 
    if (typeof window.onload != 'function') { 
     window.onload = func; 
    } else { 
     window.onload = function() { 
      oldonload(); 
      func; 
     } 
    } 
} 

//county changer 
function countyUpdate (message) { 

    var name = message.getAttribute("name"); 
    var check = message.checked; 
    var countyId = message.getAttribute("id"); 
    var countyId = countyId.split("_")[1]; 
    var innerpost = document.getElementById("innerpost_"+countyId); 
    var checks = innerpost.getElementsByTagName("input"); 

    for (var i = 0; i< checks.length; i++) { 
     if (checks[i].checked == true && check == true) { 
     checks[i].checked = false; 
     } 
    } 

} 

//postcode changer 
function postcodeUpdate (message) { 
    var parent = message.parentNode.parentNode.getAttribute("id").split("_")[1]; 
    var county = "county_"+parent; 
    var checkbox = document.getElementById(county); 
    var checked = message.checked; 

    if (checked == true) { 
     checkbox.checked = false; 
    } 


} 

//get a dynamic list of al postcode checkboxes 
function getCounties() { 
var county = document.getElementsByTagName("input"); 


for (var i = 0; i< county.length; i++) { 
var check = county[i].getAttribute("type"); 

if (check == "checkbox") { 
var name = county[i].getAttribute("name"); 
var parent = county[i].parentNode.parentNode.getAttribute("id"); 
var parent = parent.split("_")[0]; 

//action for county 
if (parent != "innerpost") { 
county[i].onclick = function() { countyUpdate(this); }; 

    }//if 


    //action for postcode 
    if (parent == "innerpost") { 
    county[i].onclick = function() { postcodeUpdate (this); }; 
    }//if 

    }//if 
    }//for 
    }//function 

    addLoadEvent (getCounties); 

ajax.js

function loadXMLDoc() 
{ 
if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
    } 
else 
    {// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText; 
    } 
    } 
xmlhttp.open("GET","cart.php",true); 
xmlhttp.send(); 
} 

这是内嵌代码,以激活第二个文件:

<button type="button" onclick="loadXMLDoc()">Change Content</button> 

当我尝试使用这两个文件一起,我似乎无法使用任何功能(甚至没有包含在函数中的简单警报)。

+2

如果我们没有代码,它很难解决某些问题。 – codedude 2010-05-04 21:25:01

+1

另外,为了弄清楚当你的代码没有“按预期执行”时究竟发生了什么,需要行使我占卜的超自然力量有点乏味。 – Pointy 2010-05-04 21:29:08

我敢打赌,你搞错了那个window.onload=杂耍。我建议你使用标准window.addEventListener()接口(检查它的存在,如果你还想支持IE,当标准接口丢失时使用window.attachEvent())。这也应该保证onload函数的执行顺序与设置它们的脚本的顺序相同。例如:

 
if (window.addEventListener) { 
    window.addEventListener('load', somefunc, false); 
} else if (window.attachEvent) { 
    window.attachEvent('onload', somefunc); 
} // else, no way to add multiple onload handlers 
+0

我完全不熟悉addEventListener。你能解释一下吗?我可以附加多个功能吗? – YsoL8 2010-05-05 19:49:35

+0

嗯,我试图用这个替换我的功能,我没有看到任何区别。 – YsoL8 2010-05-05 20:06:43

如果脚本彼此冲突,会发生这种情况。

请向我们展示脚本和错误消息。

+0

为什么这是低调? – SLaks 2010-05-04 22:05:09

+0

+1不是线索。这是有点跛脚,它是。你说的话对我来说非常有意义。 – kemiller2002 2010-05-05 00:39:17

当我使用无论单独地,在 代码的外部文件来执行的 预期。

但是,当我同时使用时,我发现 既不能正常工作。我该怎么做 需要做些什么来解决这个问题?

这听起来像是你在两个文件的某处发生了冲突。像一个被命名为相同或变量的函数等。

没有看到您可以访问的文件:
1.跟踪命名冲突(如果是这样)并更改一个。
2.将代码封装在不同对象的文件中,并通过那里访问方法/属性等。