ftp划词答题——nsyh

// ==UserScript==
// @name         ftp划词答题——nsyh
// @namespace    nsyh
// @version      0.0.1
// @description  选中题目一会放开自动答题,需要自己上传EXCEL的XSLX格式的题库,表头为ID、PW;ID列放题目,PW列放答案
// @author       Jubai_P
// @match        *://*.sdnsyh.21tb.com/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=21tb.com
// @grant        GM_xmlhttpRequest
// @grant        GM_addStyle
// @require      https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js
// @require      https://cdn.bootcdn.net/ajax/libs/xlsx-populate/1.21.0/xlsx-populate.min.js
// @require      https://cdn.bootcdn.net/ajax/libs/xlsx/0.18.5/xlsx.full.min.js
// @license             MIT
// ==/UserScript==



(function() {

    'use strict';

    var gv = {toLanguage:'zh-CN',isAutoCopy:true};

    if (/zh/i.test(navigator.language)) gv.toLanguage='zh-CN';
    else if (/ja/i.test(navigator.language)) gv.toLanguage='ja';
    else if (/en/i.test(navigator.language)) gv.toLanguage='en';

    function init() {
        $(document).ready(function() {
            var ctrlDown = false,
                altDown = false,
                ctrlKey = 17,
                cmdKey = 91,
                altKey = 18,
                vKey = 86,
                cKey = 67;

            $(document).keydown(function(e) {
                if (e.keyCode == ctrlKey || e.keyCode == cmdKey) ctrlDown = true;
                if (e.keyCode == altKey) altDown = true;
            }).keyup(function(e) {
                if (e.keyCode == ctrlKey || e.keyCode == cmdKey) ctrlDown = false;
                if (e.keyCode == altKey) altDown = false;
            });

            $(".no-copy-paste").keydown(function(e) {
                if (ctrlDown && (e.keyCode == vKey || e.keyCode == cKey)) return false;
            });

            $(document).keydown(function(e) {
                if (ctrlDown && (e.keyCode == cKey)) {gv.isAutoCopy = false};
                if (altDown && (e.keyCode == cKey)){gv.isAutoCopy = true};
                //if (ctrlDown && (e.keyCode == vKey)) console.log("Document catch Ctrl+V");
            });
        });

        document.addEventListener('mousedown', function(e){
            if (!$('#changetranslatebox') || $('#changetranslatebox').length == 0) {
               //触发显示

                createDisplay();
                $('#changetranslatebox input').on('click', function(e){
                     //设置触发文件上传
                      $("input[id='test_button']").change(function(){
                     importXlsx(this.files[0]);
                                              });

                    gv.toLanguage = e.target.getAttribute('name')
                    $('.translatedropdown').css('display', '');
                    _translate();


                    //设置名字为空
                   // setTimeout(function() { $('.translatetext').empty();}, 500);
                });
            }
            if ($('#changetranslatebox').css('display') == 'block' && !checkClick(e)) {
                $('#changetranslatebox').css('display', '');
                $('.translatedropdown').css('display', '');
                $('.translatetext').empty();
                $('.translateexplain').empty();
            }
            clearTimeout(gv.timer);
            gv.holdTime = false;
            gv.timer = setTimeout(function() { gv.holdTime = true; }, 500);
            if (e.target.className == 'translateplaysound') {
                $('.translateplaysound').addClass('translateplaysoundClick');
                playSound();
            } else if (e.target.className == 'translatelanguageset') {
                $('.translatedropdown').css('display', 'block');
            }
        }, true);

        document.addEventListener('mouseup', function(e){
             if (gv.holdTime == true && window.getSelection().toString()) {
                e.preventDefault()
                e.stopPropagation();
                gv.holdTime = false;
                showBox(e.clientX, e.clientY);
                gv.selectText = window.getSelection().toString();
                 //输出选择文字
                  console.log("选择问题:",gv.selectText)
                gv.encodeText = encodeURIComponent(gv.selectText);
                _translate();
            }
            if ($('.translateplaysoundClick') && $('.translateplaysoundClick').length > 0) {
                $('.translateplaysound').removeClass('translateplaysoundClick');
            }

              //判断文件是否上传
                    if (BOOM  == null || BOOM ==undefined ||BOOM ==''){
                    $('.translatetext').text( '文件未上传');
                    }
                    else{
                     $('.translatetext').text( '文件已上传');
                    }
            clearTimeout(gv.timer);
        }, true);
    }

    function createDisplay() {
        setStyle(['#changetranslatebox * {margin:0;padding:0;box-sizing:border-box;}','#changetranslatebox {min-height:24px;min-width:100px;max-width:360px;font:normal 12px/24px Helvetica, Tahoma, Arial, sans-serif;text-align: left;position: absolute;z-index: 2147483647;top: 22px;left: -35px;background: #fff;border: 1px solid #dcdcdc;-webkit-transition: opacity .218s;transition: opacity .218s;box-shadow: 0 1px 4px rgba(0,0,0,.2);padding: 5px 0;display: none;font-size: 12px;line-height: 20px;border-radius:3px;}','#changetranslatebox .translatecontentbox {margin:0 8px;color:#333;}','#changetranslatebox .translatecontentbox .translatetextbox{line-height:16px;border-bottom: 1px solid #ccc;padding: 2px 18px 9px 0;height: 25px;}','#changetranslatebox .translatecontentbox .translatetextbox div{vertical-align: middle;margin-right: 4px;color:#333;font-weight: normal;font-size:12px;}','#changetranslatebox .translatecontentbox .translatetextbox .translatetext{display: inline-block;font-size:14px;font-weight: bold;color:#333;}','#changetranslatebox .translatecontentbox .translatetextbox .translateplaysound {margin-left: 1px;cursor:pointer;display: inline-block;vertical-align: middle;width: 14px;height: 11px;overflow: hidden;background: url("data:image/gif;base64,R0lGODlhDgAZAIAAABy3/f///yH5BAAAAAAALAAAAAAOABkAAAI1jA+nC7ncXmg0RlTvndnt7jlcxkmjqWzotLbui4qxqBpUmoDl2Nk5GOKRSsCfDyer7ZYMSQEAOw==") no-repeat;text-decoration: none;}','#changetranslatebox .translatecontentbox .translatetextbox .translateplaysound.translateplaysoundClick {background-position:0 -14px;}','#changetranslatebox .translatecontentbox .translateexplain{padding: 2px 0 0 0;font-weight: normal;font-size:12px;}','#changetranslatebox .translatetiparrow {width: 0;height: 0;font-size: 0;line-height: 0;display: block;position: absolute;top: -16px;left: 10px;}','#changetranslatebox .translatetiparrow em, #changetranslatebox .translatetiparrow ins {width: 0;height: 0;font-size: 0;line-height: 0;display: block;position: absolute;border: 8px solid transparent;border-style: dashed dashed solid;}','#changetranslatebox .translatetiparrow em {border-bottom-color: #d8d8d8;font-style: normal;color: #c00;}','#changetranslatebox .translatetiparrow ins {border-bottom-color: #fff;top: 2px;text-decoration: underline;background:none !important}','#changetranslatebox .translatelanguageset {position:absolute;top:9px;right:10px;cursor: pointer;width: 14px;height: 14px;background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAMAAAAolt3jAAAAdVBMVEUAAAAwi/+Zxv9urv9oq/9pq/9Elv81jf89kv8wiv8+kv8wiv8xi/8wi/9/t/9+t/9co/9Zof9Hl/9Gl/9ClP9Bk/85j//k8f/Z6v+Fu//x+P/e7f/b6//G3/+/2/+w0/+q0P+52P+42P+Lvv+IvP9wr/9vr/864/KKAAAAF3RSTlMAR/7s7OK7l5VuTyMTC/z7y8ihnYSAQ/Vmp/0AAAB9SURBVAjXVY9HDsQwDAPpVKf32E7v/3/iGtJhk7kNIIgkLH0QA3EgQHTX7AnhzWdLKo9hMWYZdkmaFFpZdJ6QRo7afH9TTmSlqcy4hmkarqMpazxq0m4GZK6e1I37rQ/q8n9cNZ9XHJRzUMFBcucaB9doTy55dSAET+gB/ABPjgqB+Q/YPgAAAABJRU5ErkJggg==") no-repeat;text-decoration: none;}','#changetranslatebox .translatelanguageset .translatedropdown {margin:0;padding:0;display:none;top:13px;right:-60px;position: absolute;background-color: #ffffff;width: 68px;overflow: auto;z-index: 1;border: 1px solid rgba(0,0,0,.2);box-shadow: 0 2px 4px rgba(0,0,0,.2);}','#changetranslatebox .translatelanguageset .translatedropdown li {list-style-type:none; color: black;padding: 6px 8px;margin:0px;text-decoration: none;display: block;text-align:center;}','#changetranslatebox .translatelanguageset .translatedropdown li:hover { background-color: #f1f1f1;}']);
        $('<div id="changetranslatebox"><div class="translatecontentbox"><div class="translatetextbox"><div class="translatetext"></div><div class="translateplaysound"></div></div><div class="translateexplainbox"><div class="translateexplain"></div><div class="translateplaysound"></div></div></div><div class="translatetiparrow"><em></em><ins></ins></div><div class="translatelanguageset"><ul class="translatedropdown"><li name="zh-CN">上传EXCEL</li><input id="test_button" type="file" value="导入表格"></input></ul></div></div>').appendTo($(document.body));
    }







    function showBox(mouseX, mouseY) {
        var changetranslatebox = document.getElementById('changetranslatebox');
        var selectedRect = window.getSelection().getRangeAt(0).getBoundingClientRect();
        var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
        if (selectedRect.width) {if (getComputedStyle(document.body).position != 'static') {changetranslatebox.style.top = selectedRect.bottom - document.body.getBoundingClientRect().top + 8 + 'px';} else {changetranslatebox.style.top = selectedRect.bottom + scrollTop + 8 + 'px';}changetranslatebox.style.left = selectedRect.left + selectedRect.width / 2 - 18 + 'px';} else {changetranslatebox.style.top = mouseY - document.body.getBoundingClientRect().y + selectedRect.height + 8 + 'px';changetranslatebox.style.left = mouseX + selectedRect.width / 2 - 18 + 'px';}
        changetranslatebox.style.display = 'block';
    }

    function setStyle(css){
        if(typeof(css) == "string") GM_addStyle(css);
        else for(var i=0;i<css.length;i++){GM_addStyle(css[i]) }
    }

    //中文表达式
    var pattern = new RegExp("[\u4e00-\u9fa5]+");
    function _translate() {
        //googleTrans.Execute(pattern.test(gv.selectText)?gv.encodeText:gv.selectText, 'auto', gv.toLanguage, (ret)=>{
       //匹配方案1
        //playSound()
        //方案2

        search(gv.selectText)

        //})
    }
    //解析结果
    function parseResult(result) {
        var explains = '';
        var obj = JSON.stringify(result);

        try{
            if( typeof(obj) == 'string') gv.explains = obj;
               else

                   gv.explains = obj.join('\n');
            $('.translateexplain').text(gv.explains);
            if (navigator.clipboard && gv.isAutoCopy) {
                navigator.clipboard.writeText(gv.selectText+'\n'+gv.explains);
            }
        }catch(e){
            $('.translateexplain').text('翻译失败');
        }
    }

    function checkClick(e) {
        var path = e.path || e.composedPath();
        if (path.indexOf($('#changetranslatebox').get(0)) > -1) return true;
        else return false;
    }

        //设置题库BOOM
    let BOOM = [
    {"ID":"贷款定价系统的资金成本确定依据()","PW":"B"},
{"ID":"贷款定价中,资金成本采用()","PW":"A"},
{"ID":"关于FTP利润的确定方式,下列哪项说法正确()","PW":"D"},
{"ID":"FTP资金市场线更新频率()","PW":"A"},
{"ID":"FTP存贷款收益率曲线更新频率()","PW":"D"},
{"ID":"FTP资金市场线对存贷款业务定价是否会产生影响()","PW":"B"},
{"ID":"如3月20日至4月10日未维护FTP资金市场线,这段时间内资金市场业务将如何定价()","PW":"D"},
{"ID":"存贷款业务定价时,关于参照曲线的说法正确的是()","PW":"C"},
{"ID":"正常状态的固定利率贷款FTP基础价格确定依据()","PW":"A"},
{"ID":"固定利率贷款发放后,贷款到期前其FTP基础价格如何变化()","PW":"A"},
{"ID":"相同期限,相同结息频率的固定利率贷款,FTP价格不同的原因可能是()","PW":"C"},
{"ID":"正常状态的固定利率贷款,期限相同时,按季结息到期还本贷款的FTP价格()到期还本付息贷款的FTP价格","PW":"B"},
{"ID":"1月1日、4月1日、7月1日FTP存贷款收益率曲线1年期限对应的FTP利率分别为2.5%、2.55%、2.6%;1月10日发放的一年期固定利率贷款,4月21日、7月10日该笔贷款的FTP基础价格分别为()","PW":"A"},
{"ID":"1月1日、4月1日FTP存贷款收益率曲线1年期限对应的FTP利率分别为2.5%、2.55%;1月10日和4月10日分别发放一笔一年期固定利率贷款,5月20日这两笔贷款的FTP基础价格分别为()","PW":"C"},
{"ID":"2023年1月1日发放一笔三年期固定利率贷款,金额100万元,FTP利差为2%,测算该笔贷款能获得的FTP利润为6万元。2023年3月31日,报表中该笔贷款的FTP利润约为()","PW":"C"},
{"ID":"2023年1月1日发放一笔三年期固定利率贷款,金额100万元,FTP利差为2%,测算该笔贷款能获得的FTP利润为6万元。2024年3月31日,报表中该笔贷款的FTP利润约为()","PW":"C"},
{"ID":"系统设置将逾期贷款FTP利差锁定为0,逾期贷款最终FTP价格等于()","PW":"D"},
{"ID":"系统设置将逾期贷款FTP利差锁定为0,正常贷款转为逾期贷款后,该笔贷款的FTP利差为()","PW":"B"},
{"ID":"系统设置将逾期贷款FTP利差锁定为0,正常贷款转为逾期贷款后,该笔贷款的FTP利润如何变化()","PW":"D"},
{"ID":"FTP系统中,逾期贷款FTP利差锁定为0。一笔贷款1月1日至6月30日为正常状态,7月1日至9月30日为逾期状态,截至6月30日,该笔贷款的FTP利润为6万元,7月30日和9月30日该笔贷款的FTP利润分别为()","PW":"C"},
{"ID":"FTP系统中,逾期贷款FTP利差锁定为0。一笔贷款2023年1月1日至11月30日为正常状态,2023年12月1日至2024年2月28日为逾期状态,截至2023年11月30日,该笔贷款的FTP利润为6万元,2023年12月31日和2024年1月31日该笔贷款的FTP利润分别为()","PW":"A"},
{"ID":"非应计贷款FTP基础价格确定依据()确定","PW":"C"},
{"ID":"非应计贷款FTP价格由()组成","PW":"A"},
{"ID":"系统中非应计贷款贷款指定期限为5年。贷款转为非应计状态后,FTP价格为()","PW":"C"},
{"ID":"系统中非应计贷款贷款指定期限为5年。贷款转为非应计状态后,FTP利差为()","PW":"C"},
{"ID":"贷款转为非应计状态后,FTP利差如何变化()","PW":"D"},
{"ID":"贷款转为非应计状态后,该笔贷款的FTP利润如何变化()","PW":"C"},
{"ID":"一笔固定利率贷款合同利率为5%,1月1日开始为非应计状态,1月1日FTP存贷款收益率曲线5年期限对应的FTP利率为3.5%,4月1日FTP存贷款收益率曲线5年期限对应的FTP利率为4%。3月31日和4月30日该笔贷款FTP利差分别为()","PW":"B"},
{"ID":"浮动利率贷款FTP基础价格确定依据()","PW":"D"},
{"ID":"期限20年、按年重定价的按揭贷款,FTP基础价格为()","PW":"C"},
{"ID":"存款FTP价格由()组成","PW":"B"},
{"ID":"存款准备金调整项的目的()","PW":"A"},
{"ID":"定期存款FTP基础价格确定依据()","PW":"A"},
{"ID":"定期存款FTP价格如何确定()","PW":"A"},
{"ID":"相同期限的定期存款,FTP价格不同的原因可能是()","PW":"C"},
{"ID":"1月1日、4月1日、7月1日FTP存贷款收益率曲线1年期限对应的FTP利率分别为2.5%、2.55%、2.6%;1月10日存入的一年定期存款,4月21日、7月1日该笔存款的FTP基础价格分别为()","PW":"A"},
{"ID":"1月1日、4月1日、7月1日FTP存贷款收益率曲线1年期限对应的FTP利率分别为2.5%、2.55%、2.6%;1月10日和4月10日分别存入一笔一年定期存款,4月20日这两笔定期存款的FTP基础价格分别为()","PW":"C"},
{"ID":"2022年1月1日存入的三年期定期存款,2022年1月31日FTP利润为10万元,2022年12月31日FTP利润为120万元,2023年1月31日报表中体现的FTP利润为()","PW":"A"},
{"ID":"定期存款自动转存后,FTP价格如何确定()","PW":"B"},
{"ID":"2022年1月10日存入的一年定期存款,存入日生效的FTP存贷款收益率曲线1年期对应的FTP利率为2.5%;2023年1月10日自动转存,转存日生效的FTP存贷款收益率曲线1年期对应的FTP利率为2.55%。如对客利率保持不变,转存后该笔存款的FTP利差()","PW":"A"},
{"ID":"关于自动转存的定期存款的FTP利润,以下说法正确的是()","PW":"C"},
{"ID":"活期存款FTP基础价格确定依据()确定","PW":"C"},
{"ID":"活期存款FTP价格如何确定()","PW":"C"},
{"ID":"1月1日FTP存贷款收益率曲线1天期限和3个月期限对应的FTP利率分别为0.8%和1.62%,4月1日FTP存贷款收益率曲线1天期限和3个月期限对应的FTP利率分别为0.9%和1.7%。1月10日存入的活期存款,存入日该笔存款的FTP基础价格为()","PW":"A"},
{"ID":"1月1日FTP存贷款收益率曲线1天期限和3个月期限对应的FTP利率分别为0.8%和1.62%,4月1日FTP存贷款收益率曲线1天期限和3个月期限对应的FTP利率分别为0.9%和1.7%。1月10日存入的活期存款,4月20日该笔存款的FTP基础价格为()","PW":"B"},
{"ID":"1月1日FTP存贷款收益率曲线1天期限和3个月期限对应的FTP利率分别为0.8%和1.62%,4月1日FTP存贷款收益率曲线1天期限和3个月期限对应的FTP利率分别为0.9%和1.7%。1月10日和4月10日分别存入一笔活期存款,4月20日这两笔存款的FTP基础价格分别为()","PW":"B"},
{"ID":"1月1日FTP存贷款收益率曲线1天期限对应的FTP利率为0.8%,3个月期限对应的FTP利率为1.62%;4月1日FTP存贷款收益率曲线发生变化,1天期限对应的FTP利率为0.9%,3个月期限对应的FTP利率为1.7%。1月1日存入的活期存款,截至3月31日该笔存款的FTP利润为10万元,4月1日该笔存款的FTP利润如何变化()","PW":"B"},
{"ID":"如需鼓励或限制某类业务的发展,可通过哪种方式实现()","PW":"A"},
{"ID":"以下哪些操作可以达到鼓励客户经理发放小微企业贷款的目的()","PW":"A"},
{"ID":"贷款账户的归属客户经理来源于()中贷款账户的归属客户经理","PW":"A"},
{"ID":"下列哪个报表不受口径参数的控制()","PW":"D"},
{"ID":"贷款定价系统可以实现哪些功能()","PW":"ABC"},
{"ID":"贷款的保本利率是()","PW":"AB"},
{"ID":"下列哪种说法正确()","PW":"ABD"},
{"ID":"下列哪项是实施FTP考核的作用()","PW":"ABC"},
{"ID":"关于FTP利润,以下说法正确的是()","PW":"ABCD"},
{"ID":"下列关于FTP利率的说法,哪项是正确的()","PW":"ABC"},
{"ID":"下列关于FTP利润和FTP利差的说法,哪项是正确的()","PW":"ABCD"},
{"ID":"下列哪些业务需要确定内部资金转移价格()","PW":"AD"},
{"ID":"FTP系统包括的曲线有哪些()","PW":"ABC"},
{"ID":"FTP资金市场收益率曲线对哪些业务进行定价()","PW":"AB"},
{"ID":"FTP存贷款收益率曲线对哪些业务进行定价()","PW":"ACD"},
{"ID":"根据人民银行要求,FTP曲线必须满足哪些条件()","PW":"ABC"},
{"ID":"FTP存贷款收益率曲线发生变化对哪些业务的FTP价格不会造成影响()","PW":"ABE"},
{"ID":"FTP存贷款收益率曲线发生变化对哪些业务的FTP价格会造成影响()","PW":"ABCD"},
{"ID":"下列哪些因素影响贷款的FTP价格()","PW":"BCDEF"},
{"ID":"下列哪些因素影响贷款的FTP利差()","PW":"ABCDEF"},
{"ID":"下列哪些因素影响贷款的FTP利润()","PW":"ABCDEFG"},
{"ID":"下列哪种说法正确()","PW":"ABDE"},
{"ID":"下列哪种说法正确()","PW":"AD"},
{"ID":"系统中贷款FTP利润说法正确的是()","PW":"ACD"},
{"ID":"正常状态的固定利率贷款FTP价格有哪几部分组成()","PW":"AB"},
{"ID":"固定利率贷款发放后,如贷款到期前通过核心业务系统调低该笔贷款的对客利率,关于该笔贷款的FTP利润,以下哪种说法正确()","PW":"BC"},
{"ID":"存款准备金调整项与那些因素相关()","PW":"AB"},
{"ID":"下列哪些因素影响存款的FTP价格()","PW":"BC"},
{"ID":"下列哪些因素影响存款的FTP利差()","PW":"ABC"},
{"ID":"下列哪些因素影响存款的FTP利润()","PW":"ABCD"},
{"ID":"关于定期存款FTP利差,说法正确的是()","PW":"AB"},
{"ID":"关于活期存款FTP利差,说法正确的是()","PW":"AC"},
{"ID":"FTP系统数据来源包括()","PW":"ABCD"},
{"ID":"内生性调整项包括()","PW":"ABCDE"},
{"ID":"下列哪项业务FTP价格不包含内生性调整项()","PW":"BD"},
{"ID":"客户经理考核类报表包括()","PW":"ABCD"},
{"ID":"关于FTP报表中日均余额哪项说法正确()","PW":"AB"},
{"ID":"FTP报表中对客利息收支的计算方式为()","PW":"AC"},
{"ID":"FTP收支计算方式哪种说法正确()","PW":"ACD"},
{"ID":"FTP利润计算方式哪种说法正确()","PW":"ABC"},
{"ID":"关于客户经理产品明细查询表,说法正确的是()","PW":"ABCD"},
{"ID":"关于客户经理FTP利润考核分析表,说法正确的是()","PW":"ABC"},
{"ID":"贷款定价系统主要采用成本加成法对贷款进行逐笔定价,根据贷款的成本费用、目标收益率及客户的综合贡献等要素计算出每笔贷款的保本利率、目标利率和优惠利率。()","PW":"A"},
{"ID":"只有占用农商行资金的业务才需要确定FTP价格()","PW":"A"},
{"ID":"存贷款FTP价格只受期限影响()","PW":"B"},
{"ID":"贷款期限越长,FTP利差越高()","PW":"B"},
{"ID":"活期存款期限最短,所以FTP利差最低()","PW":"B"},
{"ID":"贷款FTP利润与贷款状态无关()","PW":"B"},
{"ID":"活期存款FTP基础价格参照1天FTP利率确定()","PW":"B"},
{"ID":"内生性调整项可按需设置()","PW":"B"},
{"ID":"对于当年新增业务,FTP报表中的日均余额为业务起息日至报表日的日均余额()","PW":"B"},
{"ID":"客户经理考核类报表中,同类业务的FTP收支和FTP利润计算方式均一致()","PW":"A"},

    ]

    //上传数据
    function importXlsx(file) {
        console.log("触发读取");
            var reader = new FileReader();
            reader.onload = function(event) {
                const datas = event.target.result;
                // console.log("触发读取");
                const workbook = XLSX.read(datas, { type: "binary" });
                const sheet = workbook.Sheets[workbook.SheetNames[0]]
                const json = XLSX.utils.sheet_to_json(sheet);
                console.log(json);
                //题库升级
                BOOM = json;

            }
            reader.readAsBinaryString(file);
        }


                //播放

    function playSound(arraybuffer) {
  ///     const questionContent = extractQuestionContent();
//console.log(questionContent);
        // 传入要选择的答案字母,比如 'A', 'B', 'C', 'D'
answerAllQuestions()


        };

// 自动答题函数 一键答题

function answerAllQuestions() {
    // Iterate through each question
    BOOM.forEach((question) => {
        const questionText = question.ID;
        const answer = question.PW;

        // Check if it's a single choice question
        const singleChoiceQuestions = document.querySelectorAll('div.question-panel-middle.SINGLE');
        singleChoiceQuestions.forEach((singleQuestionElement) => {
            const questionElement = singleQuestionElement.querySelector('.question-stem');

            if (questionElement.textContent.includes(questionText)) {
                const radioOptions = singleQuestionElement.querySelectorAll('input[type="radio"]');
                radioOptions.forEach((option) => {
                    if (option.nextElementSibling.innerText.includes(answer)) {
                        option.click();
                        console.log(`Answered Single Choice Question - ${questionText} : ${answer}`);
                    }
                });
            }
        });


// Check if it's a multiple choice question
const multipleChoiceQuestions = document.querySelectorAll('div.question-panel-middle.MULTIPLE');
multipleChoiceQuestions.forEach((multipleQuestionElement) => {
    const questionElement = multipleQuestionElement.querySelector('.question-stem');
    if (questionElement.textContent.includes(questionText)) {
        const checkboxOptions = multipleQuestionElement.querySelectorAll('input[type="checkbox"]');

        checkboxOptions.forEach((option) => {
                    if (answer.includes(option.nextElementSibling.innerText.trim().charAt(0))) {
                        option.click();
                    }
                });

        console.log(`Answered Multiple Choice Question - ${questionText} : ${answer}`);
    }
});



        // Check if it's a judgment question
        const judgmentQuestions = document.querySelectorAll('div.question-panel-middle.JUDGMENT');
        judgmentQuestions.forEach((judgmentElement) => {
            const questionElement = judgmentElement.querySelector('.question-stem');
            if (questionElement.textContent.includes(questionText)) {
                const trueOption = judgmentElement.querySelector('input[value="true"]');
                const falseOption = judgmentElement.querySelector('input[value="false"]');

                if (answer === "A") {
                    trueOption.click();
                    console.log(`Answered Judgment Question - ${questionText} : True`);
                } else if (answer === "B") {
                    falseOption.click();
                    console.log(`Answered Judgment Question - ${questionText} : False`);
                }
            }
        });
    });
}





    //匹配算法2


    function search(keyword) {

	const patterns = new RegExp(keyword, 'i'); // 不区分大小写
	let item2= BOOM.filter(item => {

        return patterns.test(item.ID) || patterns.test(item.PW) ;

					});
        //输出的是字典
           console.log(item2)
        parseResult(item2)
				}







    init();

})();



posted @ 2024-02-26 16:00  橘白CC  阅读(307)  评论(0)    收藏  举报