如何在JavaScript中包含JSON对象,以便可以通过函数访问它?

时间:2011-07-03 20:12:07

标签: javascript json

<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对象的值。

2 个答案:

答案 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,即参数列表中的nullsend

你可以从send删除参数,只使用全局myJSONObject,或者你必须确保在调用send(myJSONObject);时传递它,即{{1}}。