У вас есть несколько хороших ответов, вот некоторые альтернативы onload .
Вы можете запустить скрипт, как только документ будет готов и до того, как сработает событие загрузки, еслиВы помещаете скрипт после элемента, к которому он применяется.Самый простой способ - поместить его перед закрывающим тегом body .
Другой вариант, который добавляет прослушиватель, как только элемент находится в документе, является встроенным обработчиком, например,
<script type="text/javascript">
// Library functions that are reused
function showElement(id) {
var element = typeof id == 'string'? document.getElementById(id) : id;
element.style.display = '';
}
function hideElement(id) {
var element = typeof id == 'string'? document.getElementById(id) : id;
element.style.display = 'none';
}
// Ad hoc function for this page
function ruleTypeChange(el, id) {
el.value == 'tid and acc'? showElement(id) : hideElement(id);
}
</script>
<!-- inline handler -->
<select id="rule-type" onchange="ruleTypeChange(this, 'tid-acc')">
...
</select>
<input id="tid-acc">
<!-- alternative - use a bottom script -->
<script type="text/javascript">
document.getElementById('rule-type').onchange = function() {
ruleTypeChange(this, 'tid-acc');
};
</script>
«Нижний скрипт» может находиться где угодно после элемента, но обычно все функции «загрузки» помещаются в один скрипт непосредственно перед закрывающим тегом тела.Это также создает видимость более быстрой загрузки документа и является простой методологией для реализации.
Что касается встроенных обработчиков, вы часто будете слышать заявления о том, что «скрипт должен быть отделен от кода» от тех, кто использует сложные селекторычтобы найти элементы, только чтобы они сломались, как только структура документа изменилась.Добавление встроенных прослушивателей является не более чем головной болью при обслуживании, чем добавление класса, который может использоваться для последующего добавления прослушивателя или поддержки селекторов, зависящих от структуры документа.Они могут быть добавлены с помощью аналогичной или идентичной серверной логики, которая использовалась бы для добавления класса, идентификатора или атрибута данных.
В любом случае, делайте то, что лучше для вас, просто не забудьте расспросить догму и выяснить причину почему что-то должно быть сделано определенным образом.Когда вы понимаете это, вы можете сделать свой собственный осознанный выбор.