доступ к родителю
<li><img src="http://site.com/img/ImgCatalogueJpg/600/mono/p24img/1.jpg" onclick='set_parent_width(this.src)'></li>
взял 'src' обрезал получил текстовое значение (mono\p21img) теперь используя это значение нужно задать стиль родителю function set_parent_width(src) { if (src == 'mono/p24img') {this.parrentNode.style.width = '100%';} } результат: --> this.parrentNode == undefined this.parentElement == undefined this.previousSibling == undefined P.S/ видимо чет я не правильно сделал. Подскажите пожалуйста что? |
Цитата:
|
в смысле? я передал src аргументом.
|
Дело в том, что функции являются дочерними элементу window, а не элементу, которым они были вызваны. То есть, код
this.parentNode.style.width, вызванный внутри функции, равнозначен коду window.parentNode.style.width, что не есть правильно. Чтобы код работал, надо либо исполнять его сразу в onclick, без всяких вызовов функций, либо вместо атрибута src передавать весь элемент <img>. Вот так:
<html>
<head>
<script>
function set_parent_width(elem) {
var src = elem.src;
if (src == 'mono/p24img') {elem.parrentNode.style.width = '100%';}
}
</script>
</head>
<body>
<img src="http://site.com/img/ImgCatalogueJpg/600/mono/p24img/1.jpg" onclick='set_parent_width(this)>
</body>
</html>
|
либо писать set_parent_width.call(this, this.src)
либо (самый верный вариант) навешивать обработчик скриптом:
var el = document.querySelector('img');
el.onclick = set_parent_width;
|
| Часовой пояс GMT +3, время: 19:03. |