Javascript 如何在html文件中更改应用程序/json脚本,然后再执行?
我有一个html文件,里面有一个Javascript 如何在html文件中更改应用程序/json脚本,然后再执行?,javascript,html,arrays,json,shuffle,Javascript,Html,Arrays,Json,Shuffle,我有一个html文件,里面有一个。在加载html文件之前,我需要修改这个脚本中的json对象。我该怎么做呢?json对象看起来类似于以下内容: <script type="application/json"> { "questionOptions": { "ques_1": {"type" : "YesNoQuestion","questionText": "messages.question
。在加载html文件之前,我需要修改这个脚本中的json对象。我该怎么做呢?json对象看起来类似于以下内容:
<script type="application/json">
{
"questionOptions": {
"ques_1": {"type" : "YesNoQuestion","questionText": "messages.questions.1"},
"ques_2": {"type" : "YesNoQuestion","questionText": "messages.questions.2"},
"ques_3": {"type" : "YesNoQuestion","questionText": "messages.questions.3"},
"ques_4": {"type" : "YesNoQuestion","questionText": "messages.questions.4"},
"ques_5": {"type" : "YesNoQuestion","questionText": "messages.questions.5"}
},
"questions": [
"ques_1",
"ques_2",
"ques_3",
"ques_4",
"ques_5"
],
"persist": false,
"intl": {
"locales": "en-US",
"messages": {
"questions": {
"1": "<img src='../images/img1.jpg'>",
"2": "<img src='../images/img2.jpg'>",
"3": "<img src='../images/img3.jpg'>",
"4": "<img src='../images/img4.jpg'>",
"5": "<img src='../images/img5.jpg'>"
},
"yes": "Similar",
"no": "Old",
"dragAndDrop": "<br><span class='preq'>Is the object old or similar?</span><br>Starting dragging the button down to see the picture. Drag and drop to your answer.",
"continue": "Click Next to continue",
"next": "Next",
"back": "Back",
"finish": "Finish",
"thankYou": "Thank you for completing this form."
}
}
}
</script>
{
“问题选项”:{
“问题1”:{“类型”:“YesNoQuestion”,“questionText”:“messages.questions.1”},
“问题2”:{“类型”:“YesNoQuestion”,“questionText”:“messages.questions.2”},
“问题3”:{“类型”:“YesNoQuestion”,“questionText”:“messages.questions.3”},
“问题4”:{“类型”:“YesNoQuestion”,“questionText”:“messages.questions.4”},
“问题5”:{“类型”:“YesNoQuestion”,“questionText”:“messages.questions.5”}
},
“问题”:[
“问题1”,
“问题2”,
“问题3”,
“问题4”,
“问题5”
],
“坚持”:假,
“国际”:{
“地区”:“en US”,
“信息”:{
“问题”:{
"1": "",
"2": "",
"3": "",
"4": "",
"5": ""
},
“是”:“类似”,
“否”:“旧”,
“dragAndDrop”:“
对象是旧的还是类似的?
开始向下拖动按钮以查看图片。拖放到您的答案。”,
“继续”:“单击下一步继续”,
“下一步”:“下一步”,
“后退”:“后退”,
“完成”:“完成”,
“谢谢”:“谢谢您填写此表格。”
}
}
}
我需要随机化questionOptions、questions和intl[messages][questions],但随机化的方式与它们在给定数组中通过索引相互匹配的方式相同
非常感谢你的帮助
编辑:添加匹配的引号。这里有一些想法:
questionOptions
和messages
是散列。它们的键的顺序并不重要,所以我看不出随机化键是如何插入和布局的questions
是一个数组-这可能是您想要随机化的唯一东西(希望可以根据数组顺序在UI上进行一些渲染?)Array.prototype.shuffle = function() {
var j, x, i;
for (i = this.length; i; i--) {
j = Math.floor(Math.random() * i);
x = this[i - 1];
this[i - 1] = this[j];
this[j] = x;
}
return this;
}
然后,您可以在任何要随机化的数组上调用它,例如:
qdata.questions.shuffle(); //assuming you store that JSON in a variable called qdata
如何将JSON脚本块转换为实时数据并在加载文档之前修改原始JSON的小示例:
{“foo”:“bar”}
函数randomizeData(data){return{foo:“其他东西”};}
var数据;
(功能(){
var scripts=document.getElementsByTagName(“脚本”);
对于(var i=0;i
您需要做的第一件事是修复JSON,它是无效的。然后您需要自己编写一些代码,堆栈溢出不是一种代码编写服务。我将添加一个有助于您入门的答案。JSON如何无效?复制并粘贴到在线JSON验证器中,它将向您显示问题。首先,您缺少type=“application/json”
Simple typo的结束引号。感谢edit@bluepill提问:数据是如何转化为HTML的?您可以在加载HTML之前轻松地随机化数据,只需将
标记放在HTML
标记之前。