【问题标题】:How to change a boolean value in JS?如何更改 JS 中的布尔值?
【发布时间】:2014-12-06 18:53:51
【问题描述】:

我正在尝试制作一个具有两个功能的按钮:

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

但是变量没有改变。有人可以帮帮我吗?

【问题讨论】:

  • if (font_is_small = true)更改为if (font_is_small === true)
  • 相等比较器在 javaScript 中是 =====
  • 或者直接忽略它。 if (font_is_small) { ... }if (!font_is_small) { ... } 实际上更具可读性。

标签: javascript html css dom boolean


【解决方案1】:

要将布尔值更改为相反的值,您可以使用否定 (!),例如,x = !x 表示“将 x 设置为 false,如果它是真的,或者设置为 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");
    }
 }    

【讨论】:

    【解决方案2】:

    你有一个语法错误:

    {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");
    

    【讨论】:

    • 我真的不知道。我对 javascript 有点陌生,并在互联网上寻找改变 html 类的东西,这是唯一有效的方法。
    • 代码应该来回更改字体类。但是,我的代码不会将变量从 true 更改为 false。它仍然使字体变大,但不会使它们变小,因为变量不会改变。如果我尝试您的建议,字体根本不会改变。代码只是停止工作。
    【解决方案3】:

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

    【讨论】:

    • 这应该是评论,而不是答案。
    【解决方案4】:

    这是创建和分配变量的地方,您在 if(= 表示分配)中的等价性,并且您在两个 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;
      }
    }
    

    另外,替换并没有做任何重要的事情......我在修复这个问题后弄清楚了两行格式......这个分配更简单明了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-14
      • 1970-01-01
      • 2014-01-06
      • 2012-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-26
      相关资源
      最近更新 更多