如何通过更改全局变量来更改 SurveyJS JSON 中的变量
How to change variables within SurveyJS JSON by altering global variables
我编写了一个应用程序,旨在生成一个调查,该调查在调查的每次迭代中都会发生变化。我有一些随每次迭代而变化的全局变量,我想将其包含在调查结果中。我无法在 JSON 内更新变量。我试过将整个系统包装在启动函数中,但这似乎打破了整个调查。我不确定在这里做什么 - 我知道这与我的变量和函数如何相互嵌套有关,但我似乎无法找出理想的安排。我希望能够在最终 JSON 中包含更改变量,以便我可以存储它并在我的 SurveyJS 服务存储中查看它。有什么建议吗?
Fiddle 整个应用程序 - https://jsfiddle.net/cormundo/n9hjrpzx/1/
最相关的代码:
此启动函数隐藏登录模式并在单击登录按钮时显示调查:
function start() {
username = document.getElementById("user_PID").value;
alert("your PID is " + username);
while (count > 20);
modal.style.display = "none";
document.getElementById("surveyElement").style="display:inline-block;width:100%;";
document.getElementById("streetscape").style="display:visible";
document.getElementById("btn1").style="display:none";
};
脚本的其余部分运行调查,最重要的方面是嵌套在 JSON -
中的变量
var json;
function jsoner (){
knxer(); <- increments global count
keynamer(); <- attatches keyname to survey image from external site
mapilinker(); <- More external site business
imgur(); <- See above(To be combined with other functions here)
usernamer(); <- Theoretically attaches global username, not working
console.log (username)
json = {
pages: [
{
name: "page1",
elements: [
{
type: "text",
name: "UID",
visible: false,
title: "USERID",
defaultValue: (PID2)
},
{
type: "text",
name: "Keyn",
visible: false,
title: "Key",
defaultValue: (keyN2)
},
{
type: "text",
name: "CNT",
visible: false,
title: "TIME",
defaultValue: (count)
}...
最后,重要的是要注意,每次提交调查时,页面都应该更新为具有不同 (PID2) (keyN2) 和 (count) 变量的新版本调查,以及新图像供用户回答有关问题。涵盖所有内容的底部部分在这里 -
function update(){
knxer();
keynamer();
mapilinker();
imgur();
usernamer();
jsoner();
}
jsoner();
window.survey = new Survey.Model(json);
survey
.onComplete
.add(function (result) {
var PID = username
var results = PID + ":\n" + JSON.stringify(result.data, null, 3);
document
.querySelector('#surveyResult')
.textContent = results;
window.count ++;
update();
console.log(knx);
console.log(count);
console.log(keyname);
console.log(mapilink);
console.log(username);
survey.clear();
survey.render();
});
$("#surveyElement").Survey({model: survey});
对造成的混乱表示歉意。谢谢!
问题是您在之前声明您的调查,然后您正在收集用户名。因此,您的调查是使用 JSON 数据实例化的,其中包含 null 作为 UID 问题的默认值。
您可以通过做两件事来修复它:
- 将代码的以下部分移到
jsoner()
函数中:
window.survey = new Survey.Model(json);
survey
.onComplete
.add(function(result) {
var PID = username
var results = PID + ":\n" + JSON.stringify(result.data, null, 3);
document
.querySelector('#surveyResult')
.textContent = results;
window.count++;
update();
console.log(knx);
console.log(count);
console.log(keyname);
console.log(mapilink);
console.log(username);
survey.clear();
survey.render();
});
$("#surveyElement").Survey({
model: survey
});
- 将对
jsoner()
函数的调用移到 start()
函数中
我 fork 你的 fiddle 并让它在这里工作:https://jsfiddle.net/7u8jnpry/
我编写了一个应用程序,旨在生成一个调查,该调查在调查的每次迭代中都会发生变化。我有一些随每次迭代而变化的全局变量,我想将其包含在调查结果中。我无法在 JSON 内更新变量。我试过将整个系统包装在启动函数中,但这似乎打破了整个调查。我不确定在这里做什么 - 我知道这与我的变量和函数如何相互嵌套有关,但我似乎无法找出理想的安排。我希望能够在最终 JSON 中包含更改变量,以便我可以存储它并在我的 SurveyJS 服务存储中查看它。有什么建议吗?
Fiddle 整个应用程序 - https://jsfiddle.net/cormundo/n9hjrpzx/1/
最相关的代码:
此启动函数隐藏登录模式并在单击登录按钮时显示调查:
function start() {
username = document.getElementById("user_PID").value;
alert("your PID is " + username);
while (count > 20);
modal.style.display = "none";
document.getElementById("surveyElement").style="display:inline-block;width:100%;";
document.getElementById("streetscape").style="display:visible";
document.getElementById("btn1").style="display:none";
};
脚本的其余部分运行调查,最重要的方面是嵌套在 JSON -
中的变量var json;
function jsoner (){
knxer(); <- increments global count
keynamer(); <- attatches keyname to survey image from external site
mapilinker(); <- More external site business
imgur(); <- See above(To be combined with other functions here)
usernamer(); <- Theoretically attaches global username, not working
console.log (username)
json = {
pages: [
{
name: "page1",
elements: [
{
type: "text",
name: "UID",
visible: false,
title: "USERID",
defaultValue: (PID2)
},
{
type: "text",
name: "Keyn",
visible: false,
title: "Key",
defaultValue: (keyN2)
},
{
type: "text",
name: "CNT",
visible: false,
title: "TIME",
defaultValue: (count)
}...
最后,重要的是要注意,每次提交调查时,页面都应该更新为具有不同 (PID2) (keyN2) 和 (count) 变量的新版本调查,以及新图像供用户回答有关问题。涵盖所有内容的底部部分在这里 -
function update(){
knxer();
keynamer();
mapilinker();
imgur();
usernamer();
jsoner();
}
jsoner();
window.survey = new Survey.Model(json);
survey
.onComplete
.add(function (result) {
var PID = username
var results = PID + ":\n" + JSON.stringify(result.data, null, 3);
document
.querySelector('#surveyResult')
.textContent = results;
window.count ++;
update();
console.log(knx);
console.log(count);
console.log(keyname);
console.log(mapilink);
console.log(username);
survey.clear();
survey.render();
});
$("#surveyElement").Survey({model: survey});
对造成的混乱表示歉意。谢谢!
问题是您在之前声明您的调查,然后您正在收集用户名。因此,您的调查是使用 JSON 数据实例化的,其中包含 null 作为 UID 问题的默认值。 您可以通过做两件事来修复它:
- 将代码的以下部分移到
jsoner()
函数中:
window.survey = new Survey.Model(json);
survey
.onComplete
.add(function(result) {
var PID = username
var results = PID + ":\n" + JSON.stringify(result.data, null, 3);
document
.querySelector('#surveyResult')
.textContent = results;
window.count++;
update();
console.log(knx);
console.log(count);
console.log(keyname);
console.log(mapilink);
console.log(username);
survey.clear();
survey.render();
});
$("#surveyElement").Survey({
model: survey
});
- 将对
jsoner()
函数的调用移到start()
函数中
我 fork 你的 fiddle 并让它在这里工作:https://jsfiddle.net/7u8jnpry/