2012-08-02 109 views
1

因为我对JavaScript和Jquery知之甚少,所以希望能够在这里得到答案。Javascript互相干扰

这是我的文档<head></head>中的代码。

<script src="js/jquery.js" type="text/javascript"></script> 
    <script src="js/functions.js" type="text/javascript"></script> 
    <script type="text/javascript" src="js/jscolor/jscolor.js"></script> 
<script type="text/javascript"> 

var current_shouts = 0; 
      function $(eleid) { 
       return document.getElementById(eleid); 
      } 
      function urlencode(u) { 
       u = u.toString(); 
       var matches = u.match(/[\x90-\xFF]/g); 
       if (matches) { 
        for (var mid = 0; mid < matches.length; mid++) { 
         var char_code = matches[mid].charCodeAt(0); 
         u = u.replace(matches[mid], '%u00' + (char_code & 0xFF).toString(16).toUpperCase()); 
        } 
       } 
       return escape(u).replace(/\+/g, "%2B"); 
      } 
      function shouts() { 
       clearTimeout(getshout); 
       var xmlHttp = (window.XMLHttpRequest) ? new XMLHttpRequest : new ActiveXObject("Microsoft.XMLHTTP"); 
       xmlHttp.open("GET", "../shoutbox/shouts.php?i=" + Math.random()); 
       xmlHttp.onreadystatechange = function() { 
        if (this.readyState == 4) { 
         if (parseInt(this.responseText) > current_shouts) { 
          getshouts(); 
          current_shouts = parseInt(this.responseText); 
         } 
         getshout = setTimeout("shouts()", 1000); 
        } 
       } 
       xmlHttp.send(null); 
      } 
      function getshouts() { 
       var xmlHttp = (window.XMLHttpRequest) ? new XMLHttpRequest : new ActiveXObject("Microsoft.XMLHTTP"); 
       xmlHttp.open("GET", "../shoutbox/getshouts.php?i=" + Math.random()); 
       xmlHttp.onreadystatechange = function() { 
        if (this.readyState == 4) $("shoutbox").innerHTML = this.responseText; 
$("shoutbox").scrollTop = $("shoutbox").scrollHeight; 
       } 
       xmlHttp.send(null); 
      } 
      function push_shout() { 
       shout(); 
       return false; 
      } 
      function shout() { 
       var xmlHttp = (window.XMLHttpRequest) ? new XMLHttpRequest : new ActiveXObject("Microsoft.XMLHTTP"); 
       xmlHttp.open("POST", "../shoutbox/shout.php"); 
       var data = "user=" + urlencode($("user").value) + "&" + "shout=" + urlencode($("shout").value); 
       xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
       xmlHttp.setRequestHeader("Content-length", data.length); 
       xmlHttp.onreadystatechange = function() { 
        if (this.readyState == 4) { 
         if (!this.responseText) $("shout").value = ""; 
         else { 
          $("console").innerHTML = this.responseText; 
          setTimeout("$('console').innerHTML = ''", 5000); 
         } 
         getshouts(); 
        } 
       } 
       xmlHttp.send(data); 
       return true; 
      } 
      var getshout = setTimeout("shouts()", 1000); 
</script> 

看来,当我把上面的一切类型化的代码,这是行不通的,但其他人做,如果代码坐在它上面的工作,因为它是显示,但它上面的脚本不工作了。

我试过$.noConflict();但它似乎什么都没做,所以我不确定我在这里要做什么。

有什么建议吗?

+0

你可以检查你的.js文件路径是否正确?你能发布你收到的任何错误消息吗? – Vikram 2012-08-02 21:39:53

+3

为什么你重写$()如果你正在使用jQuery?函数$(eleid){}。如果你有jQuery手动设置Ajax调用也没有什么意义,因为你可以使用$ .ajax()的跨浏览器方法。 – scrappedcola 2012-08-02 21:41:02

+0

同意@scrappedcola,如果你已经有jQuery,那么为什么重复功能。从头开始写东西是一回事,但你显然已经拥有了jQuery,这就是你正在做的事(DOM查找,AJAX调用)。 – zatatatata 2012-08-02 21:43:43

回答

2

尝试类似:

$j = jQuery.noConflict(); 

那么你可以使用$j,当您需要引用jQuery对象。

+0

非常感谢,这似乎已经解决了这个问题:) – kira423 2012-08-02 21:44:17

+0

@ kira423欢迎你!而不是一个自我推动者,但如果这个答案解决了问题,你会介意接受它吗?谢谢! – 2012-08-03 14:16:51

0

我有问题,jQuery插件冲突莫名其妙。 我在连续分隔的脚本标签区域之间都加载到html文档的头部。然后我用:

window.onload = function() {function01(); function02();};

加载每个功能以有序的方式,并分别。

这次它为我工作。

+0

这个答案似乎与这个问题没有太大关系,请提供更多关于它如何帮助的细节。 – 2014-08-20 22:49:29