2013-12-17 62 views
-1

我正在使用下面的JavaScript代码..我已经声明局部变量在所有函数启动之前,但函数不会在调用时执行..但是当我替换函数中的所有变量与他们的含量只有它的工作原理,有什么能我是做错了..我的代码如下...javascript - 局部变量的声明

/* variables */ 
    var dmv = document.getElementById("dmv").style; 
    var nomv = document.getElementById("nomv").style; 
    var frsv = document.getElementById("frsv").style; 
/* end of variables */ 

function messagesClick() { 
    document.getElementById("notifications").style.visibility = 'visible'; 
    if (dmv.visibility == 'hidden') { 
     dmv.visibility = 'visible'; 
     nomv.visibility = 'hidden'; 
     frsv.visibility = 'hidden'; 
    }else{ 
      dmv.visibility = 'hidden'; 
    } 
} 

function notificationsClick() { 
    document.getElementById("notifications").style.visibility = 'visible'; 
    if (nomv.visibility == 'hidden') { 
     nomv.visibility = 'visible'; 
     dmv.visibility = 'hidden'; 
     frsv.visibility = 'hidden'; 
    }else{ 
      nomv.visibility = 'hidden'; 
    } 
} 

function friendRequestClick() { 
    document.getElementById("notifications").style.visibility = 'visible'; 
    if (frsv.visibility == 'hidden') { 
     frsv.visibility = 'visible'; 
     dmv.visibility = 'hidden'; 
     nomv.visibility = 'hidden'; 
    }else{ 
      frsv.visibility = 'hidden'; 
    } 
} 

任何帮助,将不胜感激..在此先感谢.. :)

+3

你们是不是要访问DOM它完全加载之前? – Mathletics

+0

这里是关于如何检查文档是否准备好而没有jQuery的讨论。 http://stackoverflow.com/questions/799981/document-ready-equivalent-without-jquery –

+1

对于那些投反对票的人:我们是不是应该解释为什么反对投票?如果你认为这个问题“不好”,你应该解释为什么新用户可以改善他们的问题。 – Roimer

回答

1

你必须等到元素存在才能访问它们。

您可以等到需要的值在第一时间让他们:

var dmv, nomv, frsv; 
var gotStyles = false; 

function getStyles() { 
    if (!gotStyles) { 
     gotStyles = true; 
     dmv = document.getElementById("dmv").style; 
     nomv = document.getElementById("nomv").style; 
     frsv = document.getElementById("frsv").style; 
    } 
} 

function messagesClick() { 
    getStyles(); 
    document.getElementById("notifications").style.visibility = 'visible'; 
    if (dmv.visibility == 'hidden') { 
     dmv.visibility = 'visible'; 
     nomv.visibility = 'hidden'; 
     frsv.visibility = 'hidden'; 
    }else{ 
      dmv.visibility = 'hidden'; 
    } 
} 

function notificationsClick() { 
    getStyles(); 
    document.getElementById("notifications").style.visibility = 'visible'; 
    if (nomv.visibility == 'hidden') { 
     nomv.visibility = 'visible'; 
     dmv.visibility = 'hidden'; 
     frsv.visibility = 'hidden'; 
    }else{ 
      nomv.visibility = 'hidden'; 
    } 
} 

function friendRequestClick() { 
    getStyles(); 
    document.getElementById("notifications").style.visibility = 'visible'; 
    if (frsv.visibility == 'hidden') { 
     frsv.visibility = 'visible'; 
     dmv.visibility = 'hidden'; 
     nomv.visibility = 'hidden'; 
    }else{ 
      frsv.visibility = 'hidden'; 
    } 
}