我有一个包含img的局部视图:
<img src="" alt="test" id="chartImage" style="display: none;" />
然后在我的视图中包含它我的javascript看起来像这样:
if ($(this).val() != '') {
setTimeout(function() {
$('#chartImage').attr("style", "")
}, 1);
}
如果我没有设置超时,则图像不显示。但是,如果我没有设置超时并在设置attr之前发出警报,则会出现图像。有点奇怪?
答案 0 :(得分:2)
如果要在页面加载时遍历DOM,则必须等待页面完成加载并构建整个DOM树。否则,当浏览器读入特定代码行(通常在HTML <head>
中)时,Javascript会立即被解释,而所需的DOM元素(稍后出现在<body>
中)尚未完全构建。
您通常将函数挂钩到window.onload
事件,但是在jQuery中,您可以将ready
事件连接到document
以在文档完成加载/构建时执行某些操作
<head>
<script type="text/javascript">
$(document).ready(init);
function init() {
// Now you can access any DOM element here.
}
</script>
</head>
答案 1 :(得分:0)
你什么时候运行脚本?你应该在DOM准备好进行操作时运行它。尝试:
$(function () {
// do your stuff here
});
答案 2 :(得分:0)
你不应该做$('#chartImage').css('display', '');