2014-12-06 95 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