js有木有类似功能的全局变量?

liyino 2014-03-21 07:34:46
如果我有两个按钮loginBTN和registerBTN,按钮点击次序的不同对应的在此页面的显示效果不同,如何记录当前的效果而动态地做出反应呢?
这是我的js代码,想借用c里面的全局变量那种方法来存储状态:
<script type = "text/javascript">
var loginStatus = 0;
var registerStatus = 0;
$(document).ready(function(){
alert("sadf");
$(".Panel").hide();
$("#loginPanel").hide();
$("#registerPanel").hide();
});
function loginClick(){
if(loginStatus == 0 || registerStatus == 0){
$(".Panel").slideDown(200);
$("#loginPanel").slideDown(200);
loginStatus = 1;
return;
}
if(loginStatus == 0 || registerStatus == 1){
$("#registerPanel").hide();
$("#loginPanel").slideDown(200);
loginStauts = 1;
registerStatus = 0;
return;
}
if(loginStatus == 1 || registerStatus == 0){
$("#loginPanel").slideUp(200);
$(".Panel").slideUp(200);
return;
}
}

这是对应的界面的:
<div id="chooseMethod">
<button id="overviewBTN">浏览</button>
<button id="loginBTN" onclick = "loginClick()">登陆</button>
<button id="registerBTN" onclick = "registerClick()">注册</button>
</div>
<div class="Panel">
<div class = "controls-Panel" id="loginPanel">
<input type="text" class="loginPanel-controls" id="Username">
<input type="text" class="loginPanel-controls" id="Passwd">
<button class="PanelBTN" id="loginPanelBTN">登陆</button>
<div id = "remember">
<input type="checkbox" class="loginPanelCheck" id="loginPanelRem" name = "loginPanelRem">
<label for = "loginPanelRem">记住密码</label>
</div>
<a href="" font-color = "#000">忘记密码?</a>
</div>
<div id = "registerPanel">
<input type="text" class="registerPanel-controls" id="rUsername" placeholder = "用户名">
<input type="text" class="registerPanel-controls" id="rEmail" placeholder = "常用邮箱">
<input type="text" class="registerPanel-controls" id="rPasswd" placeholder = "设置密码">
<button class="PanelBTN" id="registerPanelBTN">注册</button>
</div>
</div>

不知道大神能不能改一下,或者告诉我另一种方法?谢谢了
...全文
123 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
chen870201 2014-03-22
  • 打赏
  • 举报
回复
全局肯定是可以的
p2227 2014-03-22
  • 打赏
  • 举报
回复
思路是可行的,应该是有一些细节没注意到吧。 另外,我一般是用$.data把状态记录到相关的dom上
blackchef 2014-03-22
  • 打赏
  • 举报
回复
基本想法就是把状态值存在html上。 把你那几个button都用一个html元素包起来,把两个state作为html属性存在那个元素上。然后直接改那个属性就行了。

<div class="button-group" data-login-state="0" data-register-state="0">
  <button class="login"></button>
  <button class="register"></button>
</div>
html属性只能存字符串。有的时候东西复杂了,html属性不好用了。你就得建一个跟html元素对应的对象,然后把属性保存在那个对象上。然后还得有个对象和元素的映射。那个时候jquery的$(elem).data()就能帮到你了。
liyino 2014-03-22
  • 打赏
  • 举报
回复
引用 4 楼 u011461314 的回复:
if(loginStatus == 0 || registerStatus == 0){ 永远是true loginStatus = 1;
就是你说的问题,谢谢了!
liyino 2014-03-22
  • 打赏
  • 举报
回复
引用 8 楼 blackchef 的回复:
基本想法就是把状态值存在html上。 把你那几个button都用一个html元素包起来,把两个state作为html属性存在那个元素上。然后直接改那个属性就行了。

<div class="button-group" data-login-state="0" data-register-state="0">
  <button class="login"></button>
  <button class="register"></button>
</div>
html属性只能存字符串。有的时候东西复杂了,html属性不好用了。你就得建一个跟html元素对应的对象,然后把属性保存在那个对象上。然后还得有个对象和元素的映射。那个时候jquery的$(elem).data()就能帮到你了。
受教了,但是我的问题昨天自己已经发现了,就是把&&和||搞混了,逻辑改过来就对了。
zhjdg 2014-03-21
  • 打赏
  • 举报
回复
if(loginStatus == 0 || registerStatus == 0){ 永远是true loginStatus = 1;
别闹腰不好 2014-03-21
  • 打赏
  • 举报
回复
你页面要是刷新了 ,就会变成初始值。
liyino 2014-03-21
  • 打赏
  • 举报
回复
引用 1 楼 u012463264 的回复:
var loginStatus = 0; 你定义这个就是全局变量。 js中如果定义变量的时候不加var 修饰,这个变量就是全局的 ,无论声明在哪,整个页面里的JS都能调用。
但是我的html每次点击按钮时好像loginStatus永远是0,因为我的js是嵌在html里面的。
别闹腰不好 2014-03-21
  • 打赏
  • 举报
回复
var loginStatus = 0; 你定义这个就是全局变量。 js中如果定义变量的时候不加var 修饰,这个变量就是全局的 ,无论声明在哪,整个页面里的JS都能调用。

87,992

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧