图像仅在调试时显示

时间:2009-11-05 15:45:52

标签: jquery asp.net-mvc

我有一个包含img的局部视图:

<img src="" alt="test" id="chartImage" style="display: none;" />

然后在我的视图中包含它我的javascript看起来像这样:

            if ($(this).val() != '') {
                setTimeout(function() {
                    $('#chartImage').attr("style", "")
                }, 1);
            }

如果我没有设置超时,则图像不显示。但是,如果我没有设置超时并在设置attr之前发出警报,则会出现图像。有点奇怪?

3 个答案:

答案 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', '');