繁体   English   中英

从(document).ready调用时,JavaScript方法无法完全执行

[英]JavaScript method does not execute fully when called from (document).ready

我有一个页面显示(房屋背后的属性)(来自asp.net代码的html输出)。 我构建了以下javascript,只需按一下按钮,就可以更改属性上的所有css类,因此html不会更改,而css类却可以更改,从而获得2列视图。

这很好。 但是后来我想出了办法,如果用户选择2列视图,并导航到下一页(属于分页列表),则该视图将重置为原始视图(从1列开始)。

因此,我完成了以下操作。 如果用户单击该按钮,并从1列视图转到2列视图,我将该值在window.name中保存为1或2。

之后,我在这里构建这个小脚本:

 $(document).ready(setView());

 function setView() {
     if (window.name != null) {
         if (window.name == 2) {
             window.Show2Cols();
         }
         if (window.name == 1) {
             window.Show1Col();
         }

     }
 }

这可行。 方法Show2Cols()开始如下:

 function Show2Cols() {

 alert("Show2Cols is executed");
     var nodes = document.getElementById("panden").getElementsByTagName("div");
     alert("Just got all nodes.");
     for (i = 0; i < nodes.length; i++) 
     {....

因此,当我更改页面时,弹出窗口显示“ Show2Cols已执行”,但没有显示“只是得到了所有节点”。

因为这是我有史以来的第一个JS,而且不会变得更加复杂,所以我想问大家问题所在?

我的猜测是on(document).ready()可以工作,但是.getElementById()方法仍然不起作用,因为页面上还没有任何东西(视觉上)。

提前致谢。

问题是您对功能的引用

$(document).ready(setView());

您正在执行该函数并返回其值作为DOM ready事件处理程序,这是您需要的

$(document).ready(setView);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM