You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

点击按钮切换font-style时多条件判断逻辑失效如何解决?

问题诊断

你的代码无法正常生效的核心原因是条件判断的逻辑写反了。你在需要触发设置对应样式的条件前加了逻辑非运算符!,导致符合触发条件的场景全部被拦截,只有不该触发的场景会进入分支,逻辑完全倒置。

以Normal按钮的逻辑为例,你的需求是当元素font-style为空、值为italic或oblique时设置为normal,对应判断条件应为x == "" || x == "italic" || x == "oblique",你额外加的!会把这些符合条件的场景全部排除,只有x等于normal时才会进入第一个if分支,完全不符合需求。

修正后的可运行代码

HTML部分

<div id="fontstyle">font-style</div>

<button onclick="ElementTextStyleNormal()">Normal</button>
<button onclick="ElementTextItalic()">Italic</button>
<button onclick="ElementTextOblique()">Oblique</button>

JS部分

function ElementTextStyleNormal(){
    const el = document.getElementById("fontstyle");
    const currentStyle = el.style.fontStyle;
    if (currentStyle == "" || currentStyle == "italic" || currentStyle == "oblique") {
        el.style.fontStyle = "normal";
    } else if (currentStyle == "normal") {
        el.style.fontStyle = "";
    }
}

function ElementTextItalic(){
    const el = document.getElementById("fontstyle");
    const currentStyle = el.style.fontStyle;
    if (currentStyle == '' || currentStyle == 'normal' || currentStyle == 'oblique') {
        el.style.fontStyle = "italic";
    } else if (currentStyle == "italic") {
        el.style.fontStyle = "";
    }    
}

function ElementTextOblique(){
    const el = document.getElementById("fontstyle");
    const currentStyle = el.style.fontStyle;
    if (currentStyle == '' || currentStyle == 'normal' || currentStyle == 'italic') {
        el.style.fontStyle = "oblique";
    } else if (currentStyle == "oblique") {
        el.style.fontStyle = "";
    }    
}
代码优化方案

你可以把重复的逻辑抽成通用函数,大幅减少冗余代码,也能避免重复写判断条件出错:

// 通用切换函数,传入要设置的目标font-style值即可
function toggleFontStyle(targetStyle) {
    const el = document.getElementById("fontstyle");
    const currentStyle = el.style.fontStyle;
    // 当前已经是目标样式,移除设置
    if (currentStyle === targetStyle) {
        el.style.fontStyle = "";
        return;
    }
    // 其他场景直接设置为目标样式
    el.style.fontStyle = targetStyle;
}

对应的HTML按钮绑定修改为:

<button onclick="toggleFontStyle('normal')">Normal</button>
<button onclick="toggleFontStyle('italic')">Italic</button>
<button onclick="toggleFontStyle('oblique')">Oblique</button>

内容的提问来源于stack exchange,提问作者deki0

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 20:48:00