关于问卷星填空多行文本如何设置自动填写内容

LXH20181026 2020-06-06 09:43:16
问卷地址https://www.wjx.cn/jq/79564363.aspx
多行文本框是这样的

目前在网上找到好用的脚本无法解决自动输入最后这几个填空,附脚本代码
复制不全 代码地址:https://greasyfork.org/zh-CN/scripts/403205-%E9%97%AE%E5%8D%
// ==UserScript==

// 表格
// - 单选
// - 多选
// 单选
// 多选
// 星星
// 下拉
// 拉条
// 填空 默认为空
// 排序
// 图片
// @author ZainCheung
// @include https://www.wjx.cn/jq/*.aspx
// @include https://www.wjx.cn/wjx/join/complete.aspx*
// @grant none
// @namespace http://tampermonkey.net/
// ==/UserScript==

(function() {
'use strict';

// 配置填空的答案项,如果不配置,默认填无
var config = [
{
id: 2,
answer: ["某某职业技术学院2017","某某职业技术学院2019"]//随机选出一个答案
},
{
id: 9,
answer: ["无"]
},
{
id: 13,
answer: ["无","无","无","无","无","无","无"]
}
];



//答题结束,则打开新的问卷
(function openNew() {
var currentURL = window.location.href;
var pat = /complete\.aspx\?q=(\d+)/;
var obj = pat.exec(currentURL);
if (obj) {
window.location.href = "https://www.wjx.cn/jq/" + obj[1] + ".aspx";
} else {
console.log("not pat", obj);
}
})();


var currentURL = window.location.href;
//自动转为电脑网页版
(function redirect() {
try {
var pat = /(https:\/\/www\.wjx\.cn\/)(jq|m)(.*)/g;
var obj = pat.exec(currentURL);
if (obj[2] == "m") {
console.log("redirect now");
window.location.href = obj[1] + "jq" + obj[3];
} else {
console.log("do!");
}
} catch (error) {}
})();


/**
*
*
* @param {int} min The minimum value in the range
* @param {int} max The maxmum value in the range
* @return {int} Return Returns a random number within this range (both include)
*/
function randint(min, max) {
return Math.floor(Math.random() * (max - min + 1) + min);
}

function getRandomArrayElements(arr, count) {
var shuffled = arr.slice(0), i = arr.length, min = i - count, temp, index;
while (i-- > min) {
index = Math.floor((i + 1) * Math.random());
temp = shuffled[index];
shuffled[index] = shuffled[i];
shuffled[i] = temp;
}
return shuffled.slice(min);
}


/**
* @description 该函数用于自动选择
*/
function RandomChoose() {
/**
* @name 普通单选题随机选择
* @param {object} subject single subject
*/
this.singleChoose = function(subject) {
if (subject.querySelectorAll("img")[0]) { //带有图片的,无法直接click 标签<li>
var img = subject.querySelectorAll("img");
img[randint(0, img.length - 1)].click();
} else {
var list = subject.querySelectorAll("li");
var no;
for(var i = 0; i < list.length; i++){
if(list[i].querySelector(".underline") != null){
no = i;
}
}
var index = randint(0, list.length - 1);
while(index == no){index = randint(0, list.length - 1);}
list[index].click();

}
}

/****
* @name 普遍多选题随机选择
* @param {object} subject single subject
*
*/
this.multiChoose = function(subject) {
var list = subject.querySelectorAll("li");
var arr = new Array();
for (var i = 0; i < list.length; i++) {
if (list[i].querySelectorAll("input")[0].checked == true) {
list[i].click();
}
arr.push(list[i]);
}
var times = randint(3, arr.length - 1); // 多选题选择数量,一般不小于3
var indexAry = getRandomArrayElements(arr, times);//准备选中的项
var no;//禁止项
for(var j = 0; j < indexAry.length; j++){
if(indexAry[j].querySelector(".underline") != null){//去除多选框里需要填空的项
console.log(indexAry[j]);
no = j;
}
}
for (i = 0; i < indexAry.length; i++) {
if (indexAry[i].querySelectorAll("input")[0].checked == false && (i != no)) {
indexAry[i].click();
}
}
// for (i = 0; i < times; i++) {
// var randomChoose = arr.splice(randint(0, arr.length - 1), 1)[0];
// if (randomChoose.querySelectorAll("input")[0].checked == false) {
// randomChoose.click();
// }
// }
}



//随机排序题
this.randomSort = function(subject) {
var list = subject.querySelectorAll("li");
var arr = new Array();
for (var i = 0; i < list.length; i++) {
list[i].querySelectorAll("input")[0].checked = false;
list[i].querySelectorAll("span")[0].classList.remove("sortnum-sel"); //事实上这个只是一个样式,真正选择在于checkd = true || false
arr.push(list[i]);
}
for (i = 0; i < list.length; i++) {
var randomChoose = arr.splice(randint(0, arr.length - 1), 1)[0];
randomChoose.querySelectorAll("input")[0].checked = true;
randomChoose.querySelectorAll("span")[0].classList.add("sortnum-sel");
randomChoose.querySelectorAll("span")[0].innerHTML = i + 1;
}
}

//表格单选
this.martixSingleChoose = function(subject) {
var tr = subject.querySelectorAll("tbody > tr");
for (var i = 0; i < tr.length; i++) {
var td = tr[i].querySelectorAll("td");
td[randint(0, td.length - 1)].click();
}
}
//表格多选
this.martixMultiChoose = function(subject) {
var tr = subject.querySelectorAll("tbody > tr");
for (var i = 0; i < tr.length; i++) {
var td = tr[i].querySelectorAll("td");
var arr = new Array();
for (var j = 0; j < td.length; j++) {
td[j].querySelectorAll("input")[0].checked = false;
td[j].querySelectorAll("a")[0].classList.remove("jqChecked");
arr.push(td[j]);
}

var times = randint(3, arr.length - 1); // 多选题选择数量,一般不小于3
for (var k = 0; k < times; k++) {
var randomChoose = arr.splice(randint(0, arr.length - 1), 1)[0];
randomChoose.querySelectorAll("input")[0].checked = true;
randomChoose.querySelectorAll("a")[0].classList.add("jqChecked");
}
console.log(times);
}
}
this.martixStar = function(subject) {
var tr = subject.querySelectorAll("tbody > tr");
for (var i = 0; i < tr.length; i++) {
var list = tr[i].querySelectorAll("li");
var rnnum = randint(0, list.length - 1);
list[rnnum].click();
console.log(i, rnnum);
}
}

this.dropdownSelect = function(subject) {
var select = subject.querySelectorAll("select")[0];
var rnnum = randint(1, select.length - 1);
select.selectedIndex = rnnum;
}

this.singleSlider = function(subject) {

/**
*
* @param {int} _value 随机值
* @param {*} min 可选的最小值
* @param {*} max 可选的最大值
* @param {*} subject 题目
* @description 里面的_coordsX, _Number, getElCoordinate, 方法不用管,这是根据网页的方法复制下来的, 用来反模拟出clientX的值(即鼠标的值), 因为网页上没有提供js直接修改的value,因此只能模拟鼠标时间来点击拉条,需要参数clientX。
*
*/
function getClientX(_value, min, max, subject) {
var _bar = subject.querySelectorAll(".imageBar1")[0];
var _slider = subject.querySelectorAll(".imageSlider1")[0]

function _coordsX(x) {
x = _Number(x);
x = x <= _slider.offsetLeft ? _slider.offsetLeft : x >= _slider.offsetLeft + _slider.offsetWidth - _bar.offsetWidth ? _slider.offsetLeft + _slider.offsetWidth - _bar.offsetWidth : x;
return x;
}

function _Number(b) {
return isNaN(b) ? 0 : b;
}

function getElCoordinate(h) {
var e = h.offsetLeft;
while (h = h.offsetParent) {
e += h.offsetLeft;
}
return {
left: e,
};
}

var x = (_value - min) * ((_slider.offsetWidth - _bar.offsetWidth) / (max - min));
x = _coordsX(x);
var clientX = x + getElCoordinate(_slider).left + (_bar.offsetWidth / 2);
return Math.round(clientX);
}

var max = Number(subject.querySelectorAll(".slider")[0].getAttribute("maxvalue"));
var min = Number(subject.querySelectorAll(".slider")[0].getAttribute("minvalue"));
//模拟鼠标点击的事件, 关键参数ClientX
var evt = new MouseEvent("click", {
clientX: getClientX(randint(min, max), min, max, subject),
type: "click",
__proto__: MouseEvent,
});
subject.querySelectorAll(".ruler")[0].dispatchEvent(evt);
}
this.singleStar = function(subject) {
var list = subject.querySelectorAll("li:not([class='notchoice'])");
list[randint(0, list.length - 1)].click();
}
}
...全文
900 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

87,991

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧