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

将脚本放入其他函数后按钮文字颜色无法更改的问题

问题分析与修复

你的代码没法正常工作主要有两个核心问题:

  • 函数里硬编码了ID,没用到传入的参数
    比如correct(x)函数里写的是document.getElementById("x"),这里的"x"是固定字符串,不管你传什么参数进去,它都会去找id是x的元素,完全没用到你传入的按钮相关值。

  • 调用函数时传的变量未定义
    你写的correct(bt1)里的bt1根本没定义,现代浏览器不会把HTML元素的id自动转为全局变量,所以这里会直接报错。


修复方案(两种可选)

方案1:直接传按钮的ID字符串

把函数改成接收ID字符串,然后用这个字符串去获取目标元素:

function correct(id) {
  document.getElementById(id).style.color = "green";
}

function wrong(id) {
  document.getElementById(id).style.color = "red";
}

function answer() {
  const questionText = document.getElementById("p").innerHTML;
  if (questionText === "question 1") {
    correct("bt1");
    wrong("bt2");
  } else if (questionText === "question 2") {
    correct("bt2");
    wrong("bt1");
  }
}

HTML部分保持不变:

<p id="p">question 1</p>

<button id="bt1" onclick="answer()"> option 1</button>
<button id="bt2" onclick="answer()"> option 2</button>

方案2:直接传按钮元素本身

先在函数里获取按钮元素,再直接传给操作函数,函数直接修改元素样式:

function correct(element) {
  element.style.color = "green";
}

function wrong(element) {
  element.style.color = "red";
}

function answer() {
  const bt1 = document.getElementById("bt1");
  const bt2 = document.getElementById("bt2");
  const questionText = document.getElementById("p").innerHTML;
  
  if (questionText === "question 1") {
    correct(bt1);
    wrong(bt2);
  } else if (questionText === "question 2") {
    correct(bt2);
    wrong(bt1);
  }
}

HTML部分无需修改。


额外小提示:判断文本内容时用===严格相等运算符,比==更严谨,能避免一些因类型转换导致的意外问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 05:02:18