日期:2014-05-16  浏览次数:20974 次

同一页面调用js文件函数同名引起冲突的问题,如何解决 - Web 开发 / Ajax
主页面调用两个js文件,显示两个新闻模块,代码如下:<script type="text/javascript" src="hp/modcnt_1.js"></script> <script type="text/javascript" src="hp/modcnt_2.js"></script>;其中modcnt_1.js文件代码如下: function initIt()
{
pic("wz.asp?t="+new Date());
}
onload = initIt;
var xmlhttp=false;
  function GetXmlHttp(){
  if(window.XMLHttpRequest){
  xmlhttp=new XMLHttpRequest();
  }else if(window.ActiveXObject){
  xmlhttp=new ActiveXObject("Microsoft.XMLHttp");
  }
 
  return xmlhttp;
  }
//主要函数httpurl为你要调用的URL地址
  function pic(httpurl){
  GetXmlHttp();
  var url=httpurl;
  xmlhttp.onreadystatechange=callback;
  xmlhttp.open("get",url,true);
  xmlhttp.send(null);
  }
//返回值函数yj为前台调用DIV的ID
  function callback(){
  var objdiv1=document.getElementById(yj);
if(xmlhttp.readyState==1){
objdiv1.innerHTML="正在加载数据";
}
if(xmlhttp.readyState==4&&xmlhttp.status==200){
var info=xmlhttp.responseText;
objdiv1.innerHTML=info;
}
  }
modcnt_2.js文件只是更改了变量yj已经wz.asp,但是两个新闻模块只能加载一个;考虑到函数重名冲突问题,将2.js里面的函数全部改名,还是不行;请各位大大帮忙解决,急用!谢谢了县

------解决方案--------------------
其中modcnt_1.js文件代码如下: function initIt() 

pic("wz1.asp?t="+new Date(),"div1"); 
pic("wz2.asp?t="+new Date(),"div2"); 

onload = initIt; 
var xmlhttp=false; 
function GetXmlHttp(){ 
if(window.XMLHttpRequest){ 
xmlhttp=new XMLHttpRequest(); 
}else if(window.ActiveXObject){ 
xmlhttp=new ActiveXObject("Microsoft.XMLHttp"); 

  
return xmlhttp; 

 //主要函数httpurl为你要调用的URL地址 
function pic(httpurl,objid){ 
GetXmlHttp(); 
var url=httpurl; 
xmlhttp.onreadystatechange=callback(objid); 
xmlhttp.open("get",url,true); 
xmlhttp.send(null); 

 //返回值函数yj为前台调用DIV的ID 
function callback(objid){ 
var objdiv1=document.getElementById(objid); 
if(xmlhttp.readyState==1){ 
objdiv1.innerHTML="正在加载数据"; 

if(xmlhttp.readyState==4&&xmlhttp.status==200){ 
var info=xmlhttp.responseText; 
objdiv1.innerHTML=info; 


只要载入一个就可以了。在pic里加入一个变量objid表示要被填充的块元素id,然后调用callback的时候再传递下去.
在init里面调用两次pic改不同的url和objid即可。