Код, который вы указали, абсолютно действителен - и, фактически, icon
действительно «поддерживает» его значение. Проблема, вероятно, заключается в том, что get()
работает асинхронно - только вызов анонимной функции после полной загрузки 'data.xml'
с сервера. Таким образом, последовательность выполнения в реальном мире выглядит примерно так:
- вызов
get('data.xml', function(xml){...})
(начинается загрузка data.xml)
- call
console.log(icon)
(icon
все еще нулевой в этой точке)
- (data.xml завершил загрузку) теперь вызывается анонимная функция, которая присваивает значение значку:
icon = xml.documentElement.getElementsByTagName("icon")
.
Если вы хотите сделать что-то со значением icon
, после data.xml, то вам нужно будет сделать это внутри функция анонимного обратного вызова. Как это:
var icon;
$(function(){
$.get('data.xml', function(xml){
icon = xml.documentElement.getElementsByTagName("icon");
console.log(icon);
});
});
удачи!
Примечание: вы все еще можете использовать icon
из кода, который находится вне анонимной функции, но вам нужно будет подождать, чтобы получить к ней доступ, до после анонимной функции был запущен. Лучший способ сделать это - поместить зависимый код в его собственную функцию, а затем вызвать эту функцию из функции обратного вызова:
var icon;
$(function(){
$.get('data.xml', function(xml){
icon = xml.documentElement.getElementsByTagName("icon");
loadIcon();
});
function loadIcon() {
console.log(icon);
// ... do whatever you need to do with icon here
}
});