Единственная проблема в том, что вы не используете var
для объявления переменной img
.Нет проблем с тем, что остальная часть тела, возможно, не была проанализирована, поэтому не беспокойтесь об этом.
Причина, по которой отсутствие var
вызывает проблему, заключается в том, что img
сталкивается со свойством глобального объекта, созданного для вас браузером.В IE каждый элемент с идентификатором создает свойство глобального объекта (который, следовательно, доступен везде), соответствующий этому идентификатору.Это свойство доступно только для чтения, поэтому, если вы попытаетесь присвоить его, вы получите ошибку.Если вы объявляете это первым, вы создаете новую переменную, которая не мешает глобальному свойству IE, и она будет работать так, как вы ожидаете.
Вы также обнаружите, что изменение имени переменной не вступает в противоречие с ID илисвойство window
решит проблему:
banana = document.getElementById("img");
banana.src = "http://example.com/img.png";
... но это тоже не очень хорошая идея, так как вы автоматически загрязняете глобальную область с помощью banana
, что может иметь последствия вдругой код, и в строгом режиме ECMAScript 5 вы получите сообщение об ошибке.
Наконец, если вы не используете XHTML (которым вы почти наверняка не должны быть и ваш пример не имеет типа документа XHTML),нет необходимости в разметке CDATA.Вы должны удалить его.
Мораль истории: всегда объявляйте свои переменные .