2013-04-27 54 views
-4

這是非常令人尷尬的。我已經瀏覽了幾個類似的帖子在這裏stackoverflow,沿線的參考錯誤:功能xxx沒有定義。沒有運氣。當然,我確實也是Google的,但我只是想到了死路一條。JavaScript在文檔末尾...功能不被識別

長話短說:我已經繼承了長長的PHP頁面。精簡和連接的腳本和樣式表到處都是。通過backbone.js注入的業務邏輯。寫這些東西的人對我來說是有限的。我知道,那很糟糕,但我無法改變這種情況的政治。

以下是處理:我需要將twitter引導工具提示添加到動態插入的頁面疊加上的一堆圖標按鈕。這個頁面覆蓋來來去去,並不總是DOM的一部分。所以twitter引導工具提示的啓動不會影響頁面覆蓋 - 僅僅因爲它不存在,直到有人點擊一個按鈕。

我可以添加一個「onclick」到調用頁面覆蓋的按鈕,調用一個函數,a)檢查頁面覆蓋的存在和b)啓動頁面覆蓋的工具提示。該函數被稱爲ittps()。這是在一個PHP頁面最底部:

<!-- START MANAGEMENT PAGES --> 
<script type="text/javascript"> 
    // INSTANTIATE TOOLTIPS ON MANAGEMENT PAGES 
    // THIS FUNCTION GETS CALLED FROM: instances-grid-parent 
     function ittps(w){ 

     if(w=='backup'){ 

      if($(".management").length){ 
       if($("[data-toggle='tooltip']").length){ 
        $(".mngmnt-icon-restore, [data-toggle='tooltip']").tooltip(); 
        console.log('And.......................we are good.'); 
       }else{ 
        setTimeout("ittps();", 500); 
       } 
      }else{ 
       console.log('Nothing to do here.......................'); 
       setTimeout("ittps();", 500); 
      } 

     } 
</script> 
</body> 
</html> 

也許是我太天真,以爲在最底層的腳本標籤中的功能將提供給該文件的休息嗎?

基本上,按鈕被點擊的時候,我得到一個錯誤:

ReferenceError: ittps(w) is not defined. 

所以嘗試添加window.ittps = function(w){的代碼,做了一堆其他的事情(如試圖將功能添加到後$(document).ready(function(){排隊,什麼都沒有工作,我準備把這東西扔在一個堅硬的隔間牆上,在另一個小時內

有沒有人有任何想法如何使這項工作?我可以得到它的工作,如果我等待讓頁面重疊顯示,然後在JavaScript控制檯(Firebug)中運行該函數。

PS:我無法將JavaScript添加到頁面疊加層的內容中,因爲這些內容通過backbone.js呈現。我不知道是否會有解決辦法。在這一點上,我會採取任何建議,並與它一起運行。謝謝。

Final注意:如果我在JavaScript控制檯(Firebug)中執行它,代碼本身完美運行。一旦我運行它,在tootlips顯示爲期望:

var w = 'backup'; 
if(w=='backup'){ 

    if($(".management").length){ 
     if($("[data-toggle='tooltip']").length){ 
      $(".mngmnt-icon-restore, [data-toggle='tooltip']").tooltip(); 
      console.log('And.......................we are good.'); 
     }else{ 
      setTimeout("ittps('backup');", 500); 
     } 
    }else{ 
     console.log('Nothing to do here.......................'); 
     setTimeout("ittps('backup');", 500); 
    } 
} 

而且即使在執行JavaScript控制檯作品這段代碼,當頁面覆蓋存在,這裏要求與提示代碼的HTML。

   <div class="slct-with-icns"> 
        <span class="mngmnt-icons mngmnt-icon-restore" rel="tooltip" data-toggle="tooltip" data-placement="top" title="Restore" data-original-title="Restore">.</span> 
        <span class="mngmnt-icons mngmnt-icon-download" rel="tooltip" data-toggle="tooltip" data-placement="top" title="Download" data-original-title="Download">.</span> 
        <span class="mngmnt-icons mngmnt-icon-schedule" rel="tooltip" data-toggle="tooltip" data-placement="top" title="Schedule a Backup" data-original-title="Schedule a Backup">.</span> 
        <span class="mngmnt-icons mngmnt-icon-test" rel="tooltip" data-toggle="tooltip" data-placement="top" title="Test the selected restore action" data-original-title="Test the selected restore action">.</span> 
        <span class="mngmnt-icons mngmnt-icon-delete" rel="tooltip" data-toggle="tooltip" data-placement="top" title="Delete the selected backup" data-original-title="Delete the selected backup">.</span> 
       </div> 
+1

你能發佈相關的HTML嗎?您要添加onclick的部分。 – Dogbert 2013-04-27 16:45:59

+1

向我們展示如何將函數調用綁定到該按鈕。 – Bergi 2013-04-27 16:47:02

+0

您不應該將字符串傳遞給'setTimeout',而是函數。 – Bergi 2013-04-27 16:47:46

回答

3

在函數定義中缺少一個右括號}。所以<script> ... </script>塊有一個語法錯誤,沒有被評估,並且function ittps(w)未被定義。