#javascript #jsfiddle
#javascript #jsfiddle
Вопрос:
Я пытаюсь вставить текст внутри элемента с идентификатором. Однако она не отображается. Почему она не загружается?
function changeBio() {
var objects = {
name: 'Tobias',
address: {
country: 'Sweden',
county: 'Stockholms Län',
city: 'Stockholm',
},
age: 20,
weight: 80.0,
};
var name = objects.name;
var country = objects.address.country;
document.getElementById('biography').innerHTML = 'My name is ' name ', I live in ' country;
}
<p id="biography"></p>
<script>
window.onload = function() {
changeBio();
};
</script>
JSFiddle: https://jsfiddle.net/cq00/050g68ck/2 /
Комментарии:
1. но не в jsfiddle
2. @AammadUllah: Я видел, что это сработало здесь сейчас, но по какой-то причине не в JSFiddle. Вы заставляете ее работать в JSFiddle?
3. В JSFiddle ваш JS настроен для запуска onload, поэтому
changeBio
не определяется, когда выполняется скрипт в тегах script. Измените ее, чтобы вместо этого она вводилась в тело или заголовок. jsfiddle.net/050g68ck/44. @AntP какие изменения вы внесли? Оба кода выглядят точно так же, я что-то здесь упускаю?
5. @aManHasNoName — Вы можете увидеть разницу, если нажмете на Javascript (с символом зубчатого колеса) и проверьте тип загрузки.
Ответ №1:
Выдает ошибку типа «VM743: 74 Uncaught ReferenceError: changeBio не определен«. bcoz сначала вызывается «changeBio()», а затем загружается эта функция. вам не нужно выполнять явный вызов
<script>
window.onload = function() {
changeBio();
};
</script>
это может помочь.
changeBio();
function changeBio() {
var objects = {
name: 'Tobias',
address: {
country: 'Sweden',
county: 'Stockholms Län',
city: 'Stockholm',
},
age: 20,
weight: 80.0,
};
var name = objects.name;
var country = objects.address.country;
document.getElementById('biography').innerHTML = 'My name is ' name ', I live in ' country;
}
или измените, когда загружать функции javascript как «в теле» или «в голове», используя значок шестеренки.
смотрите пример :
https://jsfiddle.net/nk1506/zzsaf40k /
Ответ №2:
Просто измените тип загрузки на No wrap в body внутри jsfiddle и поместите приведенный ниже код внутри html
<p id="biography">f</p>
И ниже внутри javascript
function changeBio() {
var objects = {
name: 'Tobias',
address: {
country: 'Sweden',
county: 'Stockholms Län',
city: 'Stockholm',
},
age: 20,
weight: 80.0,
};
var name = objects.name;
var country = objects.address.country;
document.getElementById('biography').innerHTML = 'My name is ' name ', I live in ' country;
}
window.onload = function() {
changeBio();
};
запустите ее, и все будет готово
Комментарии:
1. Пожалуйста, прокомментируйте перед голосованием «против», если вы смелы, я выполнил этот код перед публикацией здесь, поэтому, пожалуйста, используйте ваши привилегии «против» или «против», как это должно быть.
Ответ №3:
При использовании Run code snippet
здесь все работает так, как задумано. Внутри JSFiddle это не работает, потому что ваша вкладка JavaScript настроена на запуск при загрузке, а ваш onload
обработчик, помещенный во вкладку HTML, запускается перед ним, поэтому changeBio
на этот раз не определен. Я предлагаю вам поместить ваш onload
обработчик также на вкладку JavaScript, чтобы сохранить весь скрипт вместе, а затем настроить его на обертывание в head
или body
. Изменил JSFidle здесь: https://jsfiddle.net/050g68ck/9 /
Комментарии:
1. Да, вы правы, изменил мое объяснение, чтобы лучше объяснить проблему.