代码获胜't在$(document).ready中执行,但将在开发人员控制台中执行
Code won't execute in $(document).ready but will in developer console
我有一些代码封装在$(document).ready(function(){ /*code*/ });
中,除了一行代码外,所有代码都运行良好。上面的代码运行良好,下面的代码运行正常,我的控制台中没有任何错误。
$('.main-right.category').height( $('.footer').height() + $('.main-right.category').height() );
那不会着火。但是,如果我将其粘贴到开发人员控制台中,并在页面加载后按enter键,它就可以工作了。所有元素都存在于页面加载时(这意味着没有一个元素是通过javascript动态构建的)。chrome、firefox、IE中的相同结果。
有什么想法吗?
edit:我应该补充一点,我的css是在我的javascript之前加载的,我在同一个javascript文件中做了其他与css相关的调整,效果很好。
此外,如果我在代码行的正上方console.log$('.main-right.category').height()和$('.footer').head(),它们都会像我预期的那样给出非零整数值。
当DOM准备好使用时,ready事件就会触发。它与加载事件不同,后者在所有资产(css、javascript、images…)都已加载时触发。
我想,当你运行代码时,你试图获得高度的元素确实已经计算出了高度,所以看起来什么都没发生。
当您在控制台中执行代码时,所有内容都已加载,因此行为符合预期。
要绑定到加载事件,请检查方法.load().
$(document).ready在DOM结构完全可用时触发,此时通常还没有完成渲染,因此元素的维度可能未知,height()将返回错误的值。
请改用$(window).load()
。
我通常用设置高度
var height = $('.footer').height() + $('.main-right.category').height();
$('.main-right.category').css('height',height+'px');
您应该使用console
来调试选择器并查看元素的高度;
$(document).ready(function() {
var $footer = $('.footer');
var $category = ('.main-right.category');
console.log($category, $footer);
console.log($category.height(), $footer.height());
console.log('New height =', ($category.height() + $footer.height()));
});
- 控制台.log触发,但随后的 Jquery 调用不执行任何操作
- 执行JavaScript代码,使用selenium webdriver或WatiN从控制台获取日志
- 如何指定在执行控制台时要显示的属性.log对象
- 函数将信息返回到控制台日志,但实际上并没有执行应有的操作
- Javascript未执行.没有控制台错误,没有验证错误
- 量角器 - 如何在输出文本文件中生成执行报告或显示控制台.log消息
- 控制台.log在 AngularJS 中执行作用域函数
- QT:Javascript执行缓慢(除非我登录到控制台)
- 如何在页面加载时执行控制台 Javascript
- 如何通过 ajax 单击时从 javascript 文件执行节点(控制台)命令
- 不同浏览器的控制台语句的执行顺序
- Firefox控制台错误:试图在清除的范围内运行编译并执行脚本
- 如何在浏览器中使用F12控制台在javascript中每隔一段时间执行一次
- 如何将node-js控制台应用程序打包为可执行文件
- 是否有可能在javascript执行中写入mongodb控制台
- 从谷歌Chrome控制台调试的最佳方式.js文件,如果它被加载和执行后按钮被点击
- JavaScript似乎加载到DOM中,但直到在chrome控制台运行才执行
- 如何在Chrome中检测javascript是从文档/扩展或javascript控制台执行的
- 停止用户's从控制台执行JavaScript
- 如何检测脚本是否直接从节点控制台执行