Как включить объект JSON в JavaScript, чтобы к нему могли обращаться функции? - PullRequest
0 голосов
/ 04 июля 2011
<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 описанным выше способом, непосредственно передав объект JSON в функцию JavaScript и включив его значение в качестве значения текстового узла? Если нет, то, что я пропускаю? Я хочу, чтобы динамически созданный div имел значение объекта JSON в своем текстовом узле.

Ответы [ 2 ]

1 голос
/ 04 июля 2011

В вашем коде вы объявляете глобальный myJSONObject, а затем объявляете аргумент функции, также называемый myJSONObject.

Глобальный будет доступен изнутри функции, кромечто вы маскируете его одним из списка аргументов.Затем вы вызываете send, не передавая никаких объектов.В результате myJSONObject, доступный внутри функции, т.е. из списка аргументов, имеет вид null.

. Вы можете удалить аргумент из send и просто использовать глобальный myJSONObject, илиВы должны убедиться, что передаете его, когда звоните send, т.е. send(myJSONObject);.

1 голос
/ 04 июля 2011

Вам нужно либо использовать глобально определенный объект, либо передать объект вместе с функцией:

Либо:

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);" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...