2013-02-17 107 views
1

我試圖讓文本區域內的文本可以通過按下按鈕切換爲粗體或不粗體。我有以下代碼:切換元素FontWeight - Javascript

function bold() 
{ 
    var ta = document.getElementById("textArea"); 

    if(ta.style.fontWeight == "normal"){ 
     ta.style.fontWeight = "bold"; 
    } 
    else{ 
     ta.style.fontWeight = "normal"; 
    } 
} 

當我按下按鈕時,第一次沒有任何反應。但我第二次按它,它完美運行。通過調試器運行它,變量「ta」在第一次變爲「」,然後第二次變爲「正常」,儘管在css中文本區域被設置爲正常。

任何想法?

感謝

回答

2

所以發生這種情況的原因是因爲ta.style正在訪問textarea元素的樣式屬性,不會有關於來自CSS的樣式的任何信息。你可以寫你的textarea這樣,它應該與你有什麼工作:

<textarea id="textArea" style="font-weight:normal"></textarea>

不過,我建議你做的東西沿着這些路線在您的JS:

function bold() 
{ 
    var ta = document.getElementById("textArea"); 

    if(ta.style.fontWeight !== "bold"){ 
     ta.style.fontWeight = "bold"; 
    } 
    else{ 
     ta.style.fontWeight = "normal"; 
    } 
} 

魔法門也有助於將您的功能重命名爲toggleBold;)

+0

太棒了,感謝您的回覆! – DJDMorrison 2013-02-17 21:30:03

1

而不是試圖打它,只是改變你的病情:

if (ta.style.fontWeight == "normal" || ta.style.fontWeight === '') { 
+0

感謝您的回覆! – DJDMorrison 2013-02-17 21:35:35

+0

'==='不起作用 – Fandango68 2015-12-08 02:47:10