2012-08-02 107 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