如何从InputExtArea读取文本作为javascript对象

如何从InputExtArea读取文本作为javascript对象,javascript,Javascript,我想将java脚本对象结构作为文本输入到inputTextarea中,我想让var将其作为对象读取。我的对象结构如下所示。我可以直接在我的xhtml页面中以var obj的形式给出,而不是在inputTextarea中给出={onchange:…但我不想这样。因为解析xml标记也有困难,否则它会抛出一些标记错误。是否可以将inputTextarea中的文本作为var对象读取,而不是作为string读取 { onchange: function(){ console.log("I been cha

我想将java脚本对象结构作为文本输入到
inputTextarea
中,我想让
var
将其作为对象读取。我的对象结构如下所示。我可以直接在我的
xhtml
页面中以
var obj的形式给出,而不是在
inputTextarea
中给出={onchange:…
但我不想这样。因为解析
xml
标记也有困难,否则它会抛出一些标记错误。是否可以将
inputTextarea
中的文本作为
var
对象读取,而不是作为
string
读取

{
onchange: function(){
console.log("I been changed now!")
},
validate: function(obj){
console.log("I be validatin' now!")
},
elements: {
"list": {
menu: [{
caption: "Append an <item>",
action: Xonomy.newElementChild,
actionParameter: "<item/>"
}]
},
"item": {
menu: [{
caption: "Add @label=\"something\"",
action: Xonomy.newAttribute,
actionParameter: {name: "label", value: "something"},
hideIf: function(jsElement){
return jsElement.hasAttribute("label");
}
}, {
caption: "Delete this <item>",
action: Xonomy.deleteElement
}, {
caption: "New <item> before this",
action: Xonomy.newElementBefore,
actionParameter: "<item/>"
}, {
caption: "New <item> after this",
action: Xonomy.newElementAfter,
actionParameter: "<item/>"
}],
canDropTo: ["list"],
attributes: {
"label": {
asker: Xonomy.askString,
menu: [{
caption: "Delete this @label",
action: Xonomy.deleteAttribute
}]
}
}
}
}
}
{
onchange:function(){
log(“我现在被改变了!”)
},
验证:功能(obj){
log(“我现在正在验证!”)
},
要素:{
“名单”:{
菜单:[{
标题:“附加一个”,
行动:Xonomy.newElementChild,
actionParameter:“
}]
},
“项目”:{
菜单:[{
标题:“添加@label=\“某物”,
操作:Xonomy.newAttribute,
actionParameter:{name:“label”,value:“something”},
hideIf:函数(jsElement){
返回jsElement.hasAttribute(“标签”);
}
}, {
标题:“删除此项”,
动作:Xonomy.deleteElement
}, {
标题:“此之前新增”,
行动:Xonomy.newelement之前,
actionParameter:“
}, {
描述:“此之后新增”,
行动:Xonomy.newelement之后,
actionParameter:“
}],
canDropTo:[“列表”],
属性:{
“标签”:{
提问者:Xonomy.askString,
菜单:[{
标题:“删除此@标签”,
操作:Xonomy.deleteAttribute
}]
}
}
}
}
}

据我所知,您需要将textarea内容作为JavaScript对象读取

如果textarea内容是有效的JSON,则可以通过调用
JSON.parse
将textarea内容转换为

如果textarea内容不是有效的JSON,而是某种任意JavaScript对象表示形式,则可以使用
eval
将其转换为JavaScript对象。但是,考虑到使用eval是一个安全问题,除非输入来自可信源,否则不应使用它

const textArea=document.getElementById('demo');
//只有当textarea内容是有效的JSON时,这才有效
//const myObject=JSON.parse(textArea.textContent);
//以下内容不安全,请自行承担使用风险
constmyobject=eval(`(${textArea.textContent})`);
console.log(myObject的类型);
console.log(myObject);

{a:1}

用解决了问题

eval('(' + myinputtext + ')');

您能花点时间正确地标记代码吗?它在控制台中工作正常。但在原始代码中,它在检查时看起来像eval(
()
),而不是eval(
(${mytext})
)。为什么在运行时会出现此缺失?我已经检查了您的答案,很高兴您找到了答案。看起来目标环境不支持模板文本,这可以解释为什么字符串连接解决了此问题。