重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

以下に記述しているHTMLとJavaScriptでは
valueの値、red, blue, yellowしか取得できません。

HTMLからvalue属性を外すと”on”しか出てきません。

このようなHTMLが記述されている場合、どうすればラベル名(赤、青、黄)を取得できますか?

分かる方いらっしゃいましたら教えて下さい。
宜しくお願いします。



(HTML)  
<input type="radio" name="color" value="red">赤
<input type="radio" name="color" value="blue">青
<input type="radio" name="color" value="yellow">黄

<button>Add!</button>

<ul>
</ul>
-------------------------------------
(JS)


'use strict';
{
document.querySelector('button').addEventListener('click', () => {
const colors = document.querySelectorAll('input');

let selectedColor;
colors.forEach(color => {
if (color.checked === true) {
selectedColor = color.value;
}
});

const li = document.createElement('li');
li.textContent = selectedColor;

document.querySelector('ul').appendChild(li);

});
}

「JavaScripでラベル名(赤、青、黄」の質問画像

A 回答 (2件)

No1です



こっちの方がちょっとだけ短いかも。

document.querySelector('button').addEventListener('click', ()=>{
let s = document.querySelector('input:checked');
if(s){
const li = document.createElement('li');
li.textContent = s.nextSibling?s.nextSibling.textContent:"";
document.querySelector('ul').appendChild(li);
}
});
    • good
    • 0

こんにちは



表示文字とinput要素は単に並んでいるだけで、包含関係などはない上に#textはHTML要素(=HTMLElement)でもないので、ご提示のままだとちょっと面倒ですね。

document.querySelector('button').addEventListener('click', ()=>{
let s = document.querySelector('input:checked');
if(s){
let c = s.parentNode.childNodes;
const li = document.createElement('li');
li.textContent = c[[...c].indexOf(s)+1].textContent;
document.querySelector('ul').appendChild(li);
}
});

HTMLの構成を
<label><input type="radio" name="color" value="red">赤</label>
などにしておくほうが、確実かつ簡単になると思います。
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!