Javascript 如何在html文件中更改应用程序/json脚本,然后再执行?

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文件,里面有一个
。在加载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],但随机化的方式与它们在给定数组中通过索引相互匹配的方式相同

非常感谢你的帮助

编辑:添加匹配的引号。

这里有一些想法:

  • 在加载html文件之前,实际上没有一种方法可以将事情随机化,除非您可以控制首先生成JSON的内容,我猜这是硬编码的,如图所示

  • 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
    标记之前。