javascript - 如何通过jQuery制作一个在线问卷调查
世界只因有你
世界只因有你 2017-05-19 10:35:56
[JavaScript讨论组]

打算做一个在线的纯前端的问卷调查,一共有十个题目,选择A得一分,选B得两分,选C得三分,选D得四分,然后最后直接弹出结果,目前我遇到的问题是比如用户在第一题选择了A之后,如果之后他修改他的答案为B,那么他的分数并不会减去一分再重新加两分,请问能用什么方法解决这个问题?谢谢


    
    

主标题

副标题

开始测试

1

2

3

4

5

6

7

8

9

10

11

这是结果

世界只因有你
世界只因有你

全部回复(5)
我想大声告诉你

//仅针对你的单选题,且每道题目都设置了value
//虽然你说是十道而所贴代码中为11道,长度依然取的10

$(document).ready(function() {
    //存储选项值
    var valueArr = [];
    //总分值
    var value = 0;
    //已选长度
    var checkedLength;
    //题目个数
    var length = 10;
    //分值存入valueArr
    function count() {
        var $parent = $(this).parents('.swiper-slide');
        console.log($parent,$parent.index('.swiper-slide'))
        valueArr[$parent.index('.swiper-wrapper .swiper-slide')] = $(this).val();
        //触发自定义事件
        $('.swiper-wrapper').trigger('valueChange');
    }
    //点击触发计分
    $(".choice input[type = 'radio']").on("click", count);
    //绑定自定义事件
    $('.swiper-wrapper').on('valueChange',function(){
        checkedLength = $('.choice input:checked').length;
        //判断是否全选
        if(checkedLength==length){
            value = 0;
            console.log(valueArr)
            valueArr.forEach(function(i){
                value += Number(i);
            })
            $('#result').html(value);
        }
    })
});
phpcn_u1582

他提交问卷的时候才把所有input的value值加起来不就可以了

高洛峰

其实不能这样算。计算用户的分数的时候就是重新统计一下,那么如果这样做的话,怎么会出现-1+2这样的情况。这可能是重新累加

阿神

若是10道题选完后才弹出总分数,可以在最后获取所有题目的被选的答案对应的分数不就好了,没必要选择时立刻累加。

phpcn_u1582
$(function(){
            var item = {};
            item.length = 0;
            $("input").click(function(){//绑定点击事件
                if(!($(this).attr("name") in item)){
                    item.length = item.length + 1;
                }
                item[$(this).attr("name")] = $(this).attr("class");
                //console.log(item);
                
                if(item.length === 11){
                    countScore();
                }
            })
            function countScore(){//统计得分
                var total = 0;
                for(var i in item){
                    switch (item[i]){
                        case "a":
                            total = total+1;
                            break;
                        case "b":
                            total = total+2;
                            break;
                        case "c":
                            total = total+3;
                            break;
                        case "d":
                            total = total+4;
                            break;
                        default:
                            break;
                    }
                }
                console.log(total);
            } 
        })
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号