<script type="text/javascript">
var myJSONObject = {"bindings": [
{"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"},
{"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"},
{"ircEvent": "PRIVMSG", "method": "randomURI", "regex": "^random.*"}
]
};
function send(myJSONObject){
var c = document.createElement('div');
var t = document.createTextNode(myJSONObject.bindings[1].regex);
c.appendChild(t);
document.body.appendChild(c);
}
</script>
</head>
<body>
<input type="button" value="go" onclick="send();" />
</body>
我是否可以通过直接将JSON对象传递给JavaScript函数并以其值作为文本节点的值来以上述方式访问JSON对象?如果不是我错过的东西是什么?我希望动态创建的div在其文本节点中具有JSON对象的值。
答案 0 :(得分:1)
您需要使用全局定义的对象或将对象与函数一起传递:
或者:
function send(){
var c = document.createElement('div');
var t = document.createTextNode(myJSONObject.bindings[1].regex);
c.appendChild(t);
document.body.appendChild(c);
}
带
<input type="button" value="go" onclick="send();" />
或强>
function send(myJSONObject){
var c = document.createElement('div');
var t = document.createTextNode(myJSONObject.bindings[1].regex);
c.appendChild(t);
document.body.appendChild(c);
}
与
<input type="button" value="go" onclick="send(myJSONObject);" />
答案 1 :(得分:1)
在您的代码中,您声明一个全局myJSONObject
,然后声明一个也称为myJSONObject
的函数参数。
可以从函数中访问全局的 ,除非您使用参数列表中的那个屏蔽它。然后在不传入任何对象的情况下调用send
。结果是函数内部可访问的myJSONObject
,即参数列表中的null
为send
。
你可以从send
删除参数,只使用全局myJSONObject,或者你必须确保在调用send(myJSONObject);
时传递它,即{{1}}。