这是我的函数changeSelectedBarStyle:
function changeSelectedBarStyle(tdId){
$("#menuTable td").each(function(index){
if(this.id == tdId){
$(this).removeClass("menuPanel");
$(this).addClass("menuPanelSelected");
}else{
$(this).removeClass("menuPanelSelected");
$(this).addClass("menuPanel");
}
});
}
这是我从控制台得到的:Uncaught TypeError: topFrame.window.changeSelectedBarStyle is not a function
它会变成一张空白页。 但是,这个错误只在第一次出现。如果刷新页面,一切正常。
----------------编辑更多信息--------------------
这是调用它的函数,我添加了一些日志(显示页面何时加载正确,这次不是空白页面):
function changeTopFrameBarStyle(pageType){
topFrame.window.changeSelectedBarStyle(pageType);
console.log(pageType);//job(it is correct)
console.log(topFrame.window.changeSelectedBarStyle);//changeSelectedBarStyle(tdId)
console.log(topFrame.window.changeSelectedBarStyle(pageType));//undefined
console.log(topFrame.window);//Window webSiteTopMenu.jsp(this page is the function changeSelectedBarStyle exists)
}
这是调用以下内容的页面:
$(document).ready(function() {
window.parent.changeTopFrameBarStyle("job");
}
问题在于: $(文档).ready(函数()
因为在这发生之前,它正在使用这个:
window.onload= function(){
window.parent.changeTopFrameBarStyle("people");
};
最佳答案
topFrame.window.changeSelectedBarStyle
可能未定义。 console.log(...)
进行验证。
可能是框架的内容尚未加载。在 window.onload
事件上访问 topFrame
,这可确保加载 DOM、所有图像、脚本和框架。
请注意,jQuery 的 ready
事件仅在 DOM 加载后才会触发,因此此时框架内容尚未加载。
如果您尝试访问 iframe
的 window
对象,您可能正在寻找 contentWindow
相反,属性(property)。
关于javascript - 未捕获的 TypeError : topFrame. window.changeSelectedBarStyle 不是一个函数,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37246160/