【问题标题】:Changing several DIVs class with a form (select options) and JavaScript使用表单(选择选项)和 JavaScript 更改多个 DIV 类
【发布时间】:2014-09-03 07:08:29
【问题描述】:

我想让我网站的用户通过为每个问题选择一个选项来回答问题。如果他们选择了正确的答案,他们给出正确答案的段落将变为绿色,他们可以通过相同的过程继续回答以下问题,而无需重新加载当前页面。

这适用于“onClick”事件,但如果选择了正确的答案,然后用其他东西替换,DIV 将保持相同的新添加类。所以这就是我想使用 onSelect 的原因,它在这里不起作用......

有人可以帮我吗?谢谢

<script language="javascript">

    function change_class1() {
        var p_l1 = document.getElementById("p_langue1");
        p_1.className = "point_langue";
    }

    function change_class2() {
        var p_l2 = document.getElementById("p_langue2");
        p_2.className = "point_langue";
    }

    function change_class3() {
        var p_l3 = document.getElementById("p_langue3");
        p_3.className = "point_langue";
    }

</script>>

<h3>QUESTIONS & ANSWERS</h3>

<div id="p_langue1">
    <p>Question 1</p>
    <select>
        <option>A</option>
        <option onselect="change_class1()">B</option>
    </select>
</div>

<div id="p_langue2">
    <p>Question 2</p>
    <select>
        <option onselect="change_class2()">A</option>
        <option>B</option>
    </select>
</div>

<div id="p_langue3">
    <p>Question 3</p>
    <select>
        <option onselect="change_class3()">A</option>
        <option>B</option>
    </select>
</div>

【问题讨论】:

  • 你能用jQuery代替纯javascript吗?
  • 我想如果以前的所有内容都不正确,则不允许用户回答问题,对吗?第二个问题:你怎么知道答案是否正确?正确答案是否存储在数据库中?
  • 如果之前的所有问题都不正确,他可以回答问题,并且我已经对所有正确的答案添加了“onselect”。我只想知道在 onClick 工作时 onSelect 有什么问题:C
  • 但是@user2911849 你必须在选择错误答案时更改 div 颜色对吗?在这种情况下,您必须处理 select 元素的 onchange 事件。
  • 根据w3.org/TR/html401/interact/forms.html#h-17.6option 没有onSelect 事件

标签: javascript html onselect


【解决方案1】:

在 Javascript 中 - Demo

 <h3>QUESTIONS & ANSWERS</h3>

<div id="p_langue1">
    <p>Question 1</p>
    <select onchange="change_class('p_langue1',this.value)">
        <option>A</option>
        <option>B</option>
    </select>
</div>
<div id="p_langue2">
    <p>Question 2</p>
    <select onchange="change_class('p_langue2',this.value)">
        <option>A</option>
        <option>B</option>
    </select>
</div>
<div id="p_langue3">
    <p>Question 3</p>
    <select onchange="change_class('p_langue3',this.value)">
        <option>A</option>
        <option>B</option>
    </select>
</div>

 function change_class(selectedId, answer) {
     var selectedValue = document.getElementById(selectedId);
     if (answer == 'A') {
         selectedValue.className = "point_langue";
     } else {
         selectedValue.className = "";
     }
 }

.point_langue {
    color :green;
}

【讨论】:

  • 谢谢,这很有用
【解决方案2】:

如果您可以使用 jQuery,您可以更轻松地为每个选择字段处理 onchange 事件,如下所示,

$('#p_langue1').on('change', function() {
    var selectedOption = $(this).val();
    if(selectedOption === 'B') {
        $('#p_langue1').addClass('point_langue');
    } else {
        $('#p_langue1').removeClass('point_langue');
    }
});

否则你可以为 select 和 javascript 设置 'onchange' 事件,

function onSelectChange() {
    var selectedOption = document.getElementById("p_langue1").value;
    if(selectedOption === 'B') {
        document.getElementById("p_langue1").setAttribute('class','point_langue');
    } else {
        document.getElementById("p_langue1").removeAttribute('class','');
    }
}

【讨论】:

  • 感谢您选择 Vaibhav Katole。问题的真正答案不是 A 或 B,我写这些字母是为了简化我的代码。我想我必须将值放入正确的答案'
猜你喜欢
  • 1970-01-01
  • 2012-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-16
  • 2018-09-15
  • 2017-12-13
  • 1970-01-01
相关资源
最近更新 更多