更改 HTML 从 JavaScript 中选择标签字体颜色

Posted

技术标签:

【中文标题】更改 HTML 从 JavaScript 中选择标签字体颜色【英文标题】:Change HTML Select tag font color from JavaScript 【发布时间】:2021-12-17 22:29:04 【问题描述】:

有没有办法从 html 选择元素中获取选项的 style.color 值 以这种形式,或者是否有任何方法可以从该选择元素内部获取特定子项的属性

注意:

当我将选项元素 id 更改为 class 时,网站停止工作

let continentsSelect = document.getElementById("continent");
let countriesSelect = document.getElementById("country");
let continentColor = document.getElementById("continent-color");

continentsSelect.style.color = continentColor.style.color
<select name="continent" id="continent">
  <option id="continent-color" value="none" style="color: yellow;">اختر قارة</option>
  <option id="continent-color" value="africa" style="color: green;">افريقيا</option>
  <option id="continent-color" value="asia" style="color: green;">اسيا</option>
  <option id="continent-color" value="europe" style="color: green;">اوربا</option>
  <option id="continent-color" value="northAmirca" style="color: green;">امريكا الشمالية</option>
  <option id="continent-color" value="southAmirca" style="color: green;">امريكا الجنوبية</option>
  <option id="continent-color" value="oceania" style="color: green;">الاوقيانوسية</option>
</select>

【问题讨论】:

id 必须是唯一的,使用 data-attributeclass 代替。 【参考方案1】:

你是这个意思吗?

ID 必须是唯一的,我们不会为选项设置样式或为它们提供 ID

const changeColor = (sel) => 
  sel.className = "";
  sel.classList.add(sel.value);
;
let continentsSelect = document.getElementById("continent");
continentsSelect.addEventListener("change",function()  changeColor(this))
changeColor(continentsSelect)
.none  color: yellow 
.africa  color: green; 
.asia  color: red; 
.europe color: blue; 
.northAmerica  color: purple; 
.southAmerica  color: teal; 
.oceania color: orange; 
<select name="continent" id="continent" class="none">
  <option value="none">اختر قارة</option>
  <option value="africa">افريقيا</option>
  <option value="asia">اسيا</option>
  <option value="europe">اوربا</option>
  <option value="northAmerica">امريكا الشمالية</option>
  <option value="southAmerica">امريكا الجنوبية</option>
  <option value="oceania">الاوقيانوسية</option>
</select>

【讨论】:

【参考方案2】:

首先,我建议为每个子节点设置唯一的 ID。然后,您可以使用此唯一 ID 来获取颜色。

或者,更好的方法是为每个选项分配一个类名。所以代码看起来是这样的。

<select onclick="run()" name="continent" id="continent">
                <option class="continent-color" value="none"style="color: yellow;">اختر قارة</option>
                <option class="continent-color" value="africa" style="color: green;">افريقيا</option>
                <option class="continent-color" value="asia"   style="color: green;">اسيا</option>
                <option class="continent-color" value="europe" style="color: green;">اوربا</option>
                <option class="continent-color" value="northAmirca" style="color: green;">امريكا الشمالية</option>
                <option class="continent-color" value="southAmirca" style="color: green;">امريكا الجنوبية</option>
                <option class="continent-color" value="oceania" style="color: green;">الاوقيانوسية</option>
            </select>

请注意,每个选项标签都包含一个类而不是一个 ID。现在要获得特定选项,您可以这样做 -

const options = document.getElementsByClassName('continent-color')
const option1 = options[0]; // Returns the first of the option tags
const option1Color = options1.style.color;

您可以更改索引 - 在这种情况下 (0) 已用于获取不同的节点。

【讨论】:

不建议按类名获取选项

以上是关于更改 HTML 从 JavaScript 中选择标签字体颜色的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Javascript 更改 HTML 单选按钮选择?

JavaScript:如何根据选择更改表单动作属性值?

HTML 表单选择元素不允许更改

JavaScript基础(一篇入门)

尝试使用 html 选择标记更改 javascript 变量

使用 javascript 按钮更改 html,使用自动递增数字选择多个值