我的html主题部分中有这些行
<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>
当我尝试同时使用这两个文件时,我似乎无法使用任何功能(甚至不包含在函数中的简单警报)。
答案 0 :(得分:2)
如果脚本相互冲突,就会发生这种情况。
请向我们展示脚本和错误消息。
答案 1 :(得分:2)
当我独立使用时, 外部文件中的代码执行为 预期
然而,当我同时使用两者时,我发现了 两者都不正常。我该怎么做 需要做些什么才能解决这个问题?
听起来你在两个文件中的某处发生了冲突。就像一个名为相同或变量等的函数。
没有看到你可以的文件:
1.追踪命名冲突(如果是这样)并更改一个
2.将代码封装在不同对象的文件中,并通过那里访问方法/属性等。
答案 2 :(得分:0)
我敢打赌,你正在弄清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