2013-04-27 55 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)未被定义。