这非常令人尴尬。我在stackoverflow上看了几篇类似的帖子,这与参考错误:功能xxx没有定义。没运气。当然,我确实谷歌也是这样,但我只是想出了死胡同。
长话短说:我继承了一个很长的PHP页面。遍布各处的简化和连接脚本和样式表。通过backbone.js注入的业务逻辑。写下这些东西的人对我来说是不受限制的。我知道,这很糟糕,但我不能改变这种情况的政治。
这是交易:我需要在动态插入的页面叠加层上向一堆图标按钮添加twitter bootstrap工具提示。此页面叠加层来来去去,并不总是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呈现。我不知道是否会有解决办法。在这一点上,我会接受任何建议,并与它一起运行。谢谢。
最后注意:如果我在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>
答案 0 :(得分:3)
函数定义中缺少右括号}
。因此,<script> ... </script>
块中存在语法错误,未进行评估且未定义function ittps(w)
。