javascript - 点击功能 react 错误

标签 javascript jquery html click

我有四个选项,如果有人选择一个选项并单击“nästa”,则答案应该存储到一个数组中。为了确保该值已被存储,我警告了数组的长度。但是,如果我单击“Visa alla alternativ”并选择另一个问题,然后再次单击“nästa”,长度将增加一。

  1. 第一次尝试:警报将显示 1
  2. 第二次尝试:警报将显示 1,并且新的警报窗口将显示 显示2。
  3. 第三次尝试:将显示 1 ,2 ,3。

为什么会发生这种情况?

Javascript:

var 答案=[];

$(".option").on("click", click_question);

        function click_question() {


        $(".option").each(function() {
            $(this).fadeTo("slow", 0.1);
            $(this).off("click");
        });



        function store_asnwer() {
            $("#nästa").click(function () {
            answer.push(select); 
            alert(answer.length);

        });
        }

        $(this).fadeTo("slow", 1); 

        $("#nästa").fadeTo("slow", 1);
        $("#visa_alternativ").fadeTo("slow", 1);

        store_asnwer();

        return select = $(this).text();
        }

        $("#visa_alternativ").on("click", function () {
            $(".option").each(function() {
                $(this).fadeTo("slow", 1);
                $(this).on("click", click_question);
            });

            answer.splice(0,1);

            $(this).fadeTo("slow", 0.2);
        });
HTML: 


<div class="option" id="option_1"> Svars alternativ_1 </div>
<div class="option" id="option_2"> Svars alternativ_2 </div>                            <div class="option" id="option_3"> Svars alternativ_3 </div>
<div class="option" id="option_4"> Svars alternativ_4 </div>

<div class="question_nästa" id="nästa"> Nästa </div>
<div class="question_nästa" id="tillbaka_question"> Tillbaka </div>
<div class="question_nästa" id="visa_alternativ"> Visa alla alternativ </div>   

感谢您的帮助!

如果我能得到解决方案,我将不胜感激

最佳答案

每次点击 .option 元素时,您都会将点击事件处理程序附加到 #nästa,因此将全部触发。连接处理程序一次。当您单击某个选项时,将其值存储在变量中并将其插入到单击函数中。

代码:

var answer = [];
var selected;

$(".option").on("click", click_question);

$("#nästa").click(function () {
    answer.push(selected);
    alert(answer.length);
});

function click_question() {

    $(".option").each(function () {
        $(this).fadeTo("slow", 0.1);
        $(this).off("click");
    });

    $(this).fadeTo("slow", 1);

    $("#nästa").fadeTo("slow", 1);
    $("#visa_alternativ").fadeTo("slow", 1);

    selected = $(this).text();
}

$("#visa_alternativ").on("click", function () {
    $(".option").each(function () {
        $(this).fadeTo("slow", 1);
        $(this).on("click", click_question);
    });

    answer.splice(0, 1);

    $(this).fadeTo("slow", 0.2);
});

演示:http://jsfiddle.net/IrvinDominin/PDc7b/

关于javascript - 点击功能 react 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22744021/

相关文章:

javascript - 使用 chart.js、javascript、html 实时流式传输数据

html - 导航菜单项未垂直居中

javascript - JS/jQuery 中类似 Flash 的视觉效果

javascript - 如何使用bootstrap datetimepicker获取三个月后的日期?

javascript - jquery 在输入单击时添加类并在单击其他输入时删除类

jquery - 将子字符串函数与 jQuery 一起使用?

javascript - 谷歌的无图像按钮

Javascript 内联 DOM 更改事件

jquery - 在没有 mac 的情况下创建 iPhone webapp

php - Paypal 订阅按钮