доступ к родителю
<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, время: 10:35. |