Ответ 1
Браузеры зависят от того, как события должны быть прикреплены. Возможно, вы захотите начать с небольшого вспомогательного метода:
function addEventHandler(elem, eventType, handler) {
if (elem.addEventListener)
elem.addEventListener (eventType, handler, false);
else if (elem.attachEvent)
elem.attachEvent ('on' + eventType, handler);
}
В следующем примере я предполагаю, что ваш IIFE действительно должен был быть событием, готовым к DOM. IIFE в вашем коде, похоже, на самом деле не служит какой-либо цели. Так...
В вашем коде есть два события: событие, готовое к DOM ("DOMContentLoaded"), и событие изменения элемента select ("onchange"). Используя вышеупомянутый помощник, ваш синтаксис jQuery преобразуется в:
addEventHandler(document, 'DOMContentLoaded', function() {
addEventHandler(document.getElementById('Email'), 'change', function() {
document.getElementById('UserName').value = this.value;
});
});
Вот демо:
function addEventHandler(elem, eventType, handler) {
if (elem.addEventListener)
elem.addEventListener (eventType, handler, false);
else if (elem.attachEvent)
elem.attachEvent ('on' + eventType, handler);
}
addEventHandler(document, 'DOMContentLoaded', function() {
addEventHandler(document.getElementById('Email'), 'change', function() {
document.getElementById('UserName').value = this.value;
});
});
<select id="Email">
<option value=""></option>
<option value="Test 1">Test 1</option>
<option value="Test 2">Test 2</option>
</select>
<input id="UserName" type="text" />