Jquery 此图仅在调试时显示

Jquery 此图仅在调试时显示,jquery,asp.net-mvc,Jquery,Asp.net Mvc,我有一个局部视图,其中包含这样一个img: <img src="" alt="test" id="chartImage" style="display: none;" /> 如果我没有设置超时,图像就不会显示。但是,如果我没有设置超时,并且在设置attr之前设置了警报,则会显示图像。有点奇怪?您什么时候运行脚本?应该在DOM准备好进行操作时运行它。尝试: $(function () { // do your stuff here }); 你不应该做$('#chartIma

我有一个局部视图,其中包含这样一个img:

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

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

您什么时候运行脚本?应该在DOM准备好进行操作时运行它。尝试:

$(function () {
    // do your stuff here
});

你不应该做
$('#chartImage').css('display','')

如果要在页面加载时遍历DOM,则必须等待页面完成加载并构建整个DOM树。否则,当浏览器读取特定代码行(通常在HTML
中)时,Javascript会立即被解释,而所需的DOM元素(稍后出现在
中)尚未完全构建

您通常将函数挂接到
窗口.onload
事件,但在jQuery中,您可以将
ready
事件挂接到
文档
以在文档加载/构建完成后执行某些操作

<head>
    <script type="text/javascript">
        $(document).ready(init);

        function init() {
            // Now you can access any DOM element here.
        }
    </script>
</head>

$(文件).ready(初始化);
函数init(){
//现在您可以在这里访问任何DOM元素。
}

这一点很好,为什么不直接使用:$(“#chartImage”).show()而不是尝试删除样式。显然,这只是一个时间问题。根据OP的说法,清理方式似乎有帮助。
<head>
    <script type="text/javascript">
        $(document).ready(init);

        function init() {
            // Now you can access any DOM element here.
        }
    </script>
</head>