2012-04-12 124 views
1

我有一个显示(从asp.net代码输出html代码)房屋/属性的页面。 我已经构建了下面的JavaScript,其中按下按钮,更改属性上的所有css类,以便html不会更改,但css类不会,以获得2列视图。当从(document).ready调用JavaScript方法时不会完全执行。

这工作正常。但后来我发现,如果用户选择了2列视图,并导航到下一页(它是一种分页列表),那么视图会重置为原始(从1列开始)。

所以我做了以下工作。如果用户点击该按钮,并从1个columnview去,到2 columnview,我在window.name该值保存为1或2

后来,我在这里BUIL这个小脚本:

$(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,它不会变得更复杂,我想问问你们问题存在的地方?

我的猜测是在(document).ready()方法上工作,但是.getElementById()方法还没有工作,因为页面上没有任何东西(视觉上)。

在此先感谢。

+2

为什么你结合jQuery与纯javascritp - 使用jQuery一路 – scibuff 2012-04-12 11:49:55

+7

'$(document).ready(setView());';这会立即执行'setView'(parens使它成为一个调用)如果你想在DOM被加载时运行这个函数,你可以使用'$(document).ready(setView);' – 2012-04-12 11:52:12

回答

5

的问题是你的参考你的函数

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

您正在执行的功能,并返回它的值作为DOM准​​备的事件处理程序,这里就是你需要

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

不确定我同意编辑,它是没有经验的jQuery用户对代码所做的工作稍微清晰一些,但不会促进代码优化。当大多数有经验的开发人员使用$(函数)方法时,我们经常会看到$(document).ready()的问题。 – GillesC 2012-04-12 14:37:03

相关问题