Javascript 用JSON对象替换HTML文件中的元素
我正在编写一些Javascript来:Javascript 用JSON对象替换HTML文件中的元素,javascript,json,replace,Javascript,Json,Replace,我正在编写一些Javascript来: 读入并解析JSON文件 读入HTML文件(创建为模板文件) 将HTML文件中的元素替换为JSON文件中的元素 它只是替换第一个元素obj.verb。有人能帮我找出语法或整体方法哪里错了吗?请参阅下面的代码和JSON文件的示例 fs.readFile("./tasks/example.json",'utf8', function(err, jsonObjectForHIT){ // parse json file and assign to variabl
fs.readFile("./tasks/example.json",'utf8', function(err, jsonObjectForHIT){
// parse json file and assign to variable obj
var obj = JSON.parse(jsonObjectForHIT)
// read in template file
fs.readFile("./tasks/StageOneQuestionTemplate1.html", function(err, addedXML){
// replace value from template with value from json object and assign to variable finalXML
var finalXML = String(addedXML).replace(/VerbGoesHere/g,obj.verb);
var finalXML = String(addedXML).replace(/RoleOne/g,obj.roles[0]);
var finalXML = String(addedXML).replace(/RoleTwo/g,obj.roles[1]);
var finalXML = String(addedXML).replace("RoleThree",obj.roles[2])
}
上面引用的示例JSON文件。
{
"verb":"tenir",
"roles":[
{"name":"with whom"},
{"name":"thing held"},
{"name":"conductor"}
],
"srcLanguageSentence":{ "text":"Burmah said it had n't held any discussions with SHV and that `` no deal of any nature is in contemplation .",
"verb":{"text":"held","sense":"HOLD, conduct","beginOffset":24,"endOffset":28},
"roles":[
{"name":"with whom","text":"with SHV","beginOffset":45,"endOffset":53},
{"name":"thing held","text":"any discussions","beginOffset":29,"endOffset":44},
{"name":"conductor","text":"it","beginOffset":13,"endOffset":15}
]
},
"tgtLanguageSentences":[
{
"text":"Je tiens �galement � mentionner la r�cente Conf�rence , tenue au Canada , sur les enfants touch�s par la guerre .",
"verb":{"text":"tenue","beginOffset":57,"endOffset":62},
"roles":[
{"name":"thing held","text":"la r�cente Conf�rence , , sur les enfants touch�s par la guerre","beginOffset":33,"endOffset":112},
{"name":"location information","text":"au Canada","beginOffset":63,"endOffset":72}
]
}
]
}我想应该是
obj.roles[].name
而不是obj.roles[]
var finalXML = String(addedXML).replace(/RoleOne/g,obj.roles[0].name);
var finalXML = String(addedXML).replace(/RoleTwo/g,obj.roles[1].name);
var finalXML = String(addedXML).replace("RoleThree",obj.roles[2].name);
我想应该是
obj.roles[].name
而不是obj.roles[]
var finalXML = String(addedXML).replace(/RoleOne/g,obj.roles[0].name);
var finalXML = String(addedXML).replace(/RoleTwo/g,obj.roles[1].name);
var finalXML = String(addedXML).replace("RoleThree",obj.roles[2].name);
obj.roles[0]
是一个对象{“name”:“who”}
。不能用对象替换字符串。
您需要在对象中引用属性“name”
obj.roles[0].name
另一个问题是,var finalXML
每行获取一个新值。
您需要向变量添加一个新值,而不是重新输入它
var finalXML = String(addedXML).replace(/VerbGoesHere/g,obj.verb)
.replace(/RoleOne/g,obj.roles[0].name)
.replace(/RoleTwo/g,obj.roles[1].name)
.replace("RoleThree",obj.roles[2].name);
obj.roles[0]
是一个对象{“name”:“who”}
。不能用对象替换字符串。
您需要在对象中引用属性“name”
obj.roles[0].name
另一个问题是,var finalXML
每行获取一个新值。
您需要向变量添加一个新值,而不是重新输入它
var finalXML = String(addedXML).replace(/VerbGoesHere/g,obj.verb)
.replace(/RoleOne/g,obj.roles[0].name)
.replace(/RoleTwo/g,obj.roles[1].name)
.replace("RoleThree",obj.roles[2].name);
更改该语法后,它只替换最后一行“var finalXML=String(addedXML).replace(“RoleThree”,obj.roles[2])。如果我把那一行注释掉,它只会替换它前面的那一行。我怎样才能让它替换所有内容(动词、角色等),而不仅仅是最后一行?你能做一把小提琴吗?我也在尝试读取JSON文件中的不同对象。例如,“var finalXML=String(addedXML).replace(/srclanguagestencetext/g,obj.srclanguagestence[0].text)”尝试从JSON文件中的“srclanguagestence”和“tgtlanguagestensions”读取文本、动词和角色,并将它们放入html模板中。错误为“无法读取未定义的属性‘text’”。有人能帮我用语法来完成这项工作吗?在更改语法后,它只替换最后一行“var finalXML=String(addedXML).replace(“RoleThree”,obj.roles[2])”。如果我把那一行注释掉,它只会替换它前面的那一行。我怎样才能让它替换所有内容(动词、角色等),而不仅仅是最后一行?你能做一把小提琴吗?我也在尝试读取JSON文件中的不同对象。例如,“var finalXML=String(addedXML).replace(/srclanguagestencetext/g,obj.srclanguagestence[0].text)”尝试从JSON文件中的“srclanguagestence”和“tgtlanguagestensions”读取文本、动词和角色,并将它们放入html模板中。错误为“无法读取未定义的属性‘text’”。有人能帮我用语法来完成这项工作吗?在更改语法后,它只替换最后一行“var finalXML=String(addedXML).replace(“RoleThree”,obj.roles[2])”。如果我把那一行注释掉,它只会替换它前面的那一行。如何让它替换所有内容(动词、角色等),而不仅仅是最后一行?更改语法后,它只替换最后一行“var finalXML=String(addedXML).replace(“RoleThree”,obj.roles[2])。如果我把那一行注释掉,它只会替换它前面的那一行。如何让它替换所有内容(动词、角色等),而不仅仅是最后一行?我也在尝试读取JSON文件中的不同对象。例如,“var finalXML=String(addedXML).replace(/srclanguagestencetext/g,obj.srclanguagestence[0].text)”尝试从JSON文件中的“srclanguagestence”和“tgtlanguagestensions”读取文本、动词和角色,并将它们放入html模板中。错误为“无法读取未定义的属性‘text’”。有人能帮我解释一下语法吗?在
obj.srclanguageSequence
中,“text”之前不需要[0],因为它是一个对象,而不是数组。只有在数组中的角色中才需要它。正确的代码也是如此:var finalXML=String(addedXML)ext)
我也在尝试读取JSON文件中的不同对象。例如,“var finalXML=String(addedXML).replace(/srclanguagestencetext/g,obj.srclanguagestence[0].text)”尝试从JSON文件中的“srclanguagestence”和“tgtlanguagestensions”读取文本、动词和角色,并将它们放入html模板中。错误为“无法读取未定义的属性‘text’”。有人能帮我解释一下语法吗?在obj.srclanguageSequence
中,“text”之前不需要[0],因为它是一个对象,而不是数组。只有在数组中的角色中才需要它。正确的代码也是如此:var finalXML=String(addedXML)ext)