2014-12-06 226 views
1

我试图让一个按钮有两个功能:如何更改JS中的布尔值?

function bigfont() 
{var font_is_small = true 
if (font_is_small = true) 
{document.getElementById('one').className= 
document.getElementById('one').className.replace("font1","font2"); 
document.getElementById('two').className= 
document.getElementById('two').className.replace("font1","font2"); 
document.getElementById('three').className= 
document.getElementById('three').className.replace("font1","font2"); 
document.getElementById('four').className= 
document.getElementById('four').className.replace("font3","font4"); 
font_is_small = true;} 
if(font_is_small = false) 
{document.getElementById('one').className= 
document.getElementById('one').className.replace("font2","font1"); 
document.getElementById('two').className= 
document.getElementById('two').className.replace("font2","font1"); 
document.getElementById('three').className= 
document.getElementById('three').className.replace("font2","font1"); 
document.getElementById('four').className= 
document.getElementById('four').className.replace("font4","font3"); 
font_is_small = true;}}  

但变量不发生改变。有人能帮助我吗?

+3

变化'如果(font_is_small =真)'来'如果(font_is_small === true)' – PeterVC 2014-12-06 18:55:11

+0

在javaScript中,相等比较器是'=='或'===' – nha 2014-12-06 18:55:17

+0

也看到这个SO帖子:http://stackoverflow.com/questions/359494/does-it-matter-which-equals - 操作员与我在使用的JavaScript比较 – nha 2014-12-06 18:56:20

回答

2

要改变一个布尔值,它的相对值可以使用否定(!),例如x = !x装置“设置xfalse如果它是truthy或true如果它是falsy”。
如果你想要的功能,以大,小字体之间切换的最简单方法是TE变量放在函数之外:
http://jsfiddle.net/zvoeLu9p/

var font_is_small = true; 
function bigfont() 
{ 
    font_is_small = !font_is_small; // switch the boolean 
    if (font_is_small){ // no need for == true 
     document.body.className= 
     document.body.className.replace("font1","font2"); 
    } 
    else { // no need for if condition 
     document.body.className= 
     document.body.className.replace("font2","font1"); 
    } 
}  
+0

谢谢,解决了它! – HYBR1D 2014-12-06 19:28:15

1

但是,您必须将变量font_is_small设置为true,您必须在代码中将其更改为false,否则您不这样做。

+0

这应该是一个评论,而不是一个答案。 – pawel 2014-12-06 19:06:54

0

这是你的变量创建和赋值的地方,你在if(= means assign)中的等价性,并且你在两个if语句中将它设置为true。 ...尝试...

var font_is_small = true; 

根据您的使用情况,font_is_small应该是全局的,不会在函数中传入或创建。

function bigfont() { 
    if (font_is_small === true) { 
    document.getElementById('one').className="font2": 
    document.getElementById('two').className="font2": 
    document.getElementById('three').className="font2": 
    document.getElementById('four').className="font2": 
    font_is_small = false; 
    } 
    if(font_is_small === false) { 
    document.getElementById('one').className="font1": 
    document.getElementById('two').className="font1": 
    document.getElementById('three').className="font1": 
    document.getElementById('four').className="font1": 
    font_is_small = true; 
    } 
} 

此外,替换,未进行任何显著......我解决这个...这个任务是简单和清晰后想通了两行格式。

0

你有一个语法错误:

{var font_is_small = true; //<---- right here you forgot a ; 
if (font_is_small == true)//<-- you forgot equal to operators on all if statements 

而且这是什么??? ??!

document.getElementById('two').className= //<--- blank? the program will be doing this: 
document.getElementById('one').className=document.getElementById('one').className.replace("font2","font1"); 
+0

我真的不知道。我有点新来的JavaScript和看在互联网上的东西来改变HTML类,这是唯一的方法,工作。 – HYBR1D 2014-12-06 19:20:49

+1

该代码应该改变字体类的前后。然而,我的代码不会将变量从true更改为false。它仍然会使字体更大,但不会使它们更小,因为变量不会更改。如果我尝试你的建议,字体根本不会改变。代码只是停止工作。 – HYBR1D 2014-12-06 19:24:09