Стиль TextNode
Я делаю простую программу с множественным выбором с помощью переключателей. Когда студент получает неправильный ответ, я могу поставить Х после ее выбора, но как мне сделать Х красным? Спасибо за любую помощь, Джерард
<body>
<input type="radio" name="Q1" value="1756-1819,Berlioz"
onclick = "radioProcessor(this)" /> 1756-1819
<script>
function radioProcessor(theRadio){
theRadio.nextSibling.nodeValue = theRadio.nextSibling.nodeValue + " X";
}
</script>
</body>
2 ответа
Скажи спасибо Андре, но это не сработало. Я думаю, потому что TextNode содержит текст, а не другие элементы (например, span). Однако благодаря вашей идее это возможно -
<input type="radio" name="Q1" value="1756-1819,Berlioz"
onclick = "radioProcessor(this)" /> <span> 1756-1819</span>
<script>
function radioProcessor(theRadio){
console.log(theRadio.nextElementSibling); // prints [object Text]
theRadio.nextElementSibling.setAttribute("style","color:red");
theRadio.nextElementSibling.innerHTML =
theRadio.nextElementSibling.innerHTML + " X";
}
Это ближе, но я бы хотел, чтобы только "X" было красным:-) Он также продолжает добавлять X каждый раз, когда нажимается радиокнопка!
Этот код работает для меня. Даже при двойном нажатии на кнопку радио.
<input type="radio" name="Q1" value="1756-1819,Berlioz"
onclick = "radioProcessor(this)" /> <span id="value"> 1756-1819</span>
<script>
function radioProcessor(theRadio){
var xAdded = document.getElementsByClassName("incorrect").length;
if(!xAdded) {
var result = document.createElement('span');
result.setAttribute("class", "incorrect");
result.innerHTML = theRadio.nextSibling.nodeValue + " X";
var value = document.getElementById("value");
value.parentNode.insertBefore(result, value.nextSibling);
}
}
</script>