Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   доступ к родителю (https://javascript.ru/forum/events/41675-dostup-k-roditelyu.html)

pumaone 24.09.2013 18:58

доступ к родителю
 
<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/ видимо чет я не правильно сделал. Подскажите пожалуйста что?

рони 24.09.2013 19:11

Цитата:

Сообщение от pumaone
set_parent_width(src)

где тут this?

pumaone 24.09.2013 19:15

в смысле? я передал src аргументом.

Erolast 24.09.2013 19:15

Дело в том, что функции являются дочерними элементу 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>

danik.js 24.09.2013 19:21

либо писать set_parent_width.call(this, this.src)
либо (самый верный вариант) навешивать обработчик скриптом:
var el = document.querySelector('img');
el.onclick = set_parent_width;


Часовой пояс GMT +3, время: 10:35.