2012-08-02 112 views
0

当我尝试更新变量“a”中的值到标签标签的类属性时,我的代码中存在一个小问题。谁能帮我吗。这里是我的代码变量中的值未在标签标签中更新

<html> 
<head> 
<style> 
label.visible {visibility:visible} 
label.hidden {visibility:hidden} 
</style> 
<script type="text/javascript"> 
var a; 
function doset() 
{ 
a="hidden"; 
alert(a); 
return a; 
} 
</script> 
</head> 
<body> 
<form> 
<label class=visible>Hello</label> 
<button onclick="doset()">v</button><br> 
<label class=a>Hello1</label><br> 
<label class=a>Hello2</label><br> 
<label class=a>Hello3</label><br> 
<label class=a>Hello4</label><br> 
<label class=a>Hello5</label><br> 
</form> 
</body> 
</html> 

这里是小提琴:http://jsfiddle.net/M8CXN/

+0

我不确定你想达到什么。你所做的只是覆盖一个全局变量,而不是改变一个元素的类 - 那是你想要做什么? – Utkanos 2012-08-02 10:31:33

+0

关于你的html,请把你的类名加引号。 – 2012-08-02 10:32:36

+0

提醒并返回“隐藏”你想用这个值做什么?你也应该'onclick =“doset();返回false;”'以防止重新加载页面 – 2012-08-02 10:32:52

回答

1

class=a

这并不绑定类名的javascript全局变量a;在不同的情况下它们是不同的东西。

如果你想操纵类,你必须通过DOM来实现。最简单的方法是使用容器;

<div id="myItems"> 
    <label>Hello1</label><br> 
    <label>Hello2</label><br> 
    ... 

function doset() { 
    a="hidden"; 
    document.getElementById("myItems").style.visibility = a; 
    alert(a); 
} 

<button onclick="doset(); return false;">v</button><br> 
0

如果你把所有的相关标签同一类:

<label class="myclass">Hello1</label><br> 
<label class="myclass">Hello2</label><br> 
<label class="myclass">Hello3</label><br> 

然后,您可以针对这些添加或删除类你想:

$('.myclass').addClass('hidden'); 
$('.myclass').removeClass('hidden'); 

或者只是:

$('.myclass').hide(); 
$('.myclass').show(); 

(使用jQuery

+0

问题没有被标记为jQuery。 – Jamiec 2012-08-02 10:39:05

+0

没有。这是一个非常有用的DOM库操作,虽然:) – Flash 2012-08-02 10:44:30

+0

这是,但如果问题没有标记jQuery你不应该给一个jQuery的答案。只是我的$ 0.02 – Jamiec 2012-08-02 11:20:31

0
<html> 
<head> 
<style> 
label.visible {visibility:visible} 
label.hidden {visibility:hidden} 
</style> 
<script type="text/javascript"> 

function setLabelsClass(){ 
    var form = document.getElementsByTagName('form'); 
    var labels = form[0].getElementsByTagName('label'); 
    for(var i=0,len=labels.length;i<len;i++){ 
     var lbl_class = labels[i].getAttribute('class'); 
     if(lbl_class==="") labels[i].setAttribute('class','hidden'); 
    } 
} 
</script> 
</head> 
<body> 
<form> 
<label class=visible>Hello</label> 
<button onclick="setLabelsClass(); return false;">v</button><br> 
<label>Hello1</label><br> 
<label class="">Hello2</label><br> 
<label class="">Hello3</label><br> 
<label class="">Hello4</label><br> 
<label class="">Hello5</label><br> 
</form> 
</body> 
</html>​ 

不是一个好方法叫做毕竟,如果你不提供AJAX,因为你的形式已经不提交。 第二次想到我有这种感觉,你可能不明白我在这里谈论的是什么,但你会做到的。