如何在JS中更改布尔值?

时间:2014-12-06 18:53:51

标签: javascript html css dom boolean

我试图制作一个包含两个功能的按钮:

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;}}    

但变量并没有改变。有人能帮助我吗?

4 个答案:

答案 0 :(得分:4)

要将布尔值更改为其相反的值,您可以使用否定(!),例如x = !x表示"如果&{34}将x设置为false 39;如果它是假的,那就是true" 如果希望函数在小字体和大字体之间切换,最简单的方法是将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");
    }
 }    

答案 1 :(得分:1)

但是你必须将变量font_is_small设置为true,而你必须在代码中将其更改为false。

答案 2 :(得分:0)

创建和分配变量的位置,if(=表示赋值)中的等价,以及在BOTH 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;
  }
}

此外,替换并没有做任何重要的事情......我在解决这个问题后想出了两行格式......这个任务更简单,更清晰。

答案 3 :(得分: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");