javascript изменить innerhtml

ok im new на javascript, но я пытаюсь изменить innerhtml тега div, heres мой скрипт и его не работает:

<head>
<script type="text/javascript">
function var1() {
document.getElementById('test').innerHTML = 'hi';
}
window.onLoad = var1();
</script>
</head>
<body>
<div id="test">change</div>
</body>

он должен работать, но по какой-то причине его нет, никакой помощи?

7 ответов


вместо того, чтобы назначать var1 to window.onload, в настоящее время вы вызываете функцию и сохраняете ее результат. Кроме того, это может быть очевидно, но var1 Кажется странным именем для функции. Попробуйте это:

function var1() {
  document.getElementById('text').innerHTML = 'hi';
}

window.onload = var1;

Примечание корпус onload, а также отсутствующие скобки после var1.


С помощью .innerHTML is нестандартные, и ужасная практика по многим причинам. вы должны создать новый элемент, используя правильные стандартные методы, и добавить его в дерево, где вы хотите его


правильно:

window.onload = var1;

в вашем примере значение window.события onload составляет undefined потому что функция var1 ничего не возвращает (undefined). Вы должны установить свойство onload в функцию var1, а не результат вызова функции var1()


вы получаете элемент с идентификатором "test", но в вашем html нет элемента с этим идентификатором. Существует, однако, один под названием "Текст".


ваш пример будет работать, если вы измените верхний регистр " L "на нижний регистр" L "в" onLoad " и удалите скобки после var1, где у вас в настоящее время есть


попробуйте изменить onLoad на onload.

function var1() {
  document.getElementById('test').innerHTML = 'hi';
}
window.onload = var1; // onload

Ниже Еще одна более простая версия

<body>
 <div id="test">change</div>
  <script type="text/javascript">
   document.getElementById('test').innerHTML = 'hi';
 </script>
</body>