2015-09-19 48 views
0

我希望有人能幫助我。我在寫一些有幾個自我調用函數的代碼。如果我將它們嵌入到html頁面中(如下面的代碼所示),但它們(顯然減去周圍的腳本標記)包含在我的外部JavaScript文件中,則它們都會進行處理,而不是......沒有快樂,它們不會援引自己。任何線索如果放置在外部文件中,以及爲什麼他們不會調用(以及如何讓他們這樣做!):自調用函數只能在html中嵌入,但不能在外部JavaScript文件中嵌入?

自調用函數拉掉了html頁面:

  <script> 

      (function() { 
       window.addEventListener("load", function() { 
        var d = new Date(); 
        var n = d.toLocaleString(); 
        var x = function dateDisplay(){ 
        document.getElementById("dateDisplay").textContent = n; 
        } 
        x();  
      }) 
      document.getElementById("dateDisplay").style.color = "red"; 
      })(); 
      var add = (function() { 
      var counter = 0; 
      return function() {return counter += 1;} 
      })(); 

      function closureCount() { 
      var hugeNum = Math.random(); 
      var fixedNum = (hugeNum * 100) + 1; 
      var randomNum= Math.floor(fixedNum); 
      document.getElementById("p_r4").innerHTML = add() + " " + randomNum; 
      //code 
      } 
      </script> 
+0

你將單獨的js文件包含到HTML中,對嗎?通常在完成,但可以在任何地方 –

+0

是的,我的所有其他功能在該文件中工作完美。只有那些不會運行的自我激勵者。 – Israelithyme

+0

必須在某處存在拼寫錯誤,請檢查控制檯錯誤?您可以將iffe函數(自執行)放入外部js文件 –

回答

0

嘗試「少即是多」的方法:

  1. 確保<script></script>標籤已被刪除,並不存在於外部JS文件。腳本標籤僅在HTML文件中有效。

  2. 在最終完成之前不要嘗試訪問DOM元素,就像在窗口加載事件偵聽器中那樣。根據評論,對日期顯示元素的第二個引用需要移動。這可能使兩個自調用函數的樣子:

    (function() 
    { window.addEventListener("load", function() 
        { var d = new Date(); 
         var n = d.toLocaleString(); 
         // access document elements after window load 
         document.getElementById("dateDisplay").textContent = n; 
         document.getElementById("dateDisplay").style.color = "red"; 
        }); 
    })(); 
    
    var add = (function() 
    { var counter = 0; 
        return function() 
        { return counter += 1; 
        } 
    })(); 
    

(與「{」和「}」下相互對進行調試,改變以符合自己的風格。)