我正在尝试制作一个运行调查的小页面。我希望调查可以在页面内重复,但用户在进入页面时需要输入登录名。我正在尝试编写代码,以便他们填写登录信息,然后开始调查。我正在尝试使用一个 JSON 来提供 100 多个随机图像,每次用户完成调查应用程序时都会发送一个新图像。
因此,每次调用 start 函数时,都会运行调查函数。但是,它只运行大约 1 秒,而不是我想要的连续运行。当我玩弄页面的顺序并添加计时器时,我设法让调查运行一次,但在完成后不会自行重置。它似乎也没有从另一个函数中获取变量——我希望“计数”变量随着调查的重复完成而增加。它也没有拾取用户名变量,该变量是在外部“启动”函数内部创建的。
我认为我的问题与不了解函数和变量应该如何相互嵌套以及异步在 Javascript 中的工作方式有关。谁能指出我正确的方向?这是解决问题的 JSfiddle和代码片段:
//button Login
function serv (){
Survey
.StylesManager
.applyTheme("modern");
window.survey = new Survey.Model(json);
survey
.onComplete
.add(function (result) {
count ++;
var PID = username;
var results = PID + "|||" + (keyname) + ":\n" + JSON.stringify(result.data, null, 3) + (count) ;
document
.querySelector('#surveyResult')
.textContent = results;
survey.clear();
survey.render();
});
$("#surveyElement").Survey({model: survey});
}
function start() {
var username = document.getElementById("user_PID").value;
alert("your PID is " + username);
modal.style.display = "none";
serv();
}
var knlist = {}
var count = 13
var knx = ("kn" + count)
var keyname = (knlist[knx])
var mapilink = "https://images.mapillary.com/" + (keyname) + "/thumb-1024.jpg";
var json = {}
var modal = document.getElementById('id01');