1

我正在尝试通过按下按钮将文本区域内的文本切换为粗体或不加粗。我有以下代码:

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

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

当我按下按钮时,第一次没有任何反应。但我第二次按下它,它运行完美。通过调试器运行它,变量“ta”第一次变为等于“”,然后第二次变为“正常”,尽管在 css 中将文本区域设置为正常。

有任何想法吗?

谢谢

4

2 回答 2

2

所以发生这种情况的原因是因为ta.style正在访问 textarea 元素的 style 属性,它不会有任何关于来自 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将您的函数重命名为;)也可能会有所帮助

于 2013-02-17T21:15:33.343 回答
1

与其试图与之抗争,不如改变你的状况:

if (ta.style.fontWeight == "normal" || ta.style.fontWeight === '') {
于 2013-02-17T21:09:23.903 回答