🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.javascript
Article #51701

Re: dlaczego firstChild oraz childNodes[0] mam undefined?

#51701
From: Cezary Tomczyk
Date: Wed, 15 Mar 2017 08:45
69 lines
3545 bytes
On 15/03/2017 06:20, Jivanmukta wrote:
> Mam na stronie:
>
>         <div id="client_mobile_field">
>             <div class="label"><label class="obligatory">Telefony
> komórkowe:</label></div>
>             <div class="control">
>                 <div>
>                     <?php echo my_form_input('client_mobile1',
> my_set_value('client_mobile1', $fullAnnouncementNo, $announcement),
> 'id="client_mobile1" maxlength="16" size="16" style="width: 16ex"
> class="mobile" onfocus="onFocusElement(this.id);"
> onblur="onBlurElement(this.id);"'),
>                                form_error('client_mobile1'); ?>
>                 </div>
>                 <div>
>                     <?php echo my_form_input('client_mobile2',
> my_set_value('client_mobile2', $fullAnnouncementNo, $announcement),
> 'id="client_mobile2" maxlength="16" size="16" style="width: 16ex"
> class="mobile" onfocus="onFocusElement(this.id);"
> onblur="onBlurElement(this.id);"'),
>                                form_error('client_mobile2'); ?>
>                 </div>
>             </div>
>             <div class="tip">...<b>albo</b> telefon komórkowy
> (9-cyfrowy)...</div>
>         </div>
>
> Podczas obsługi zdarzenia onfocus elementu client_mobile1 potrzebuję
> dobrać się do jedo etykiety. Robię to tak:
>
> function divLabelOf(elem) {
>     if (elem) {
>         var p = elem;
>         while (p.className != 'control') {
>             p = p.parentNode;
>         }
>         p = p.parentNode;
> alert("div " + p.id);
> alert("firstChild " + p.firstChild.id);
> alert("childNodes[0] " + p.childNodes[0].id);
>         return p.firstChild;    // powinno być div
>     }
>     return null;
> }
>
> Wyświetla mi się:
>
> div client_mobile_field
> firstChild undefined
> childNodes[0] undefined
>
> Dlaczego undefined? Jak poprawić funkcję divLabelOf? Byłbym wdzięczny za
> podpowiedź.

Sprawdź, jaki obiekt kryje się pod p.firstChild. Może zamiast 
p.firstChild użyj q.querySelector('tutaj CSS selector do żądanego 
elementu').

A poza tym, zrezygnuj z onfocus i onblur inline i skorzystaj z delegacji 
zdarzeń (event delegation):

https://bfkot.wordpress.com/2010/09/02/event-delegation-delegowane-nasluchy-czyli-wydarzenia-w-delegacji-czesc-1/

-- 
Cezary Tomczyk
https://www.aslint.org/ - walidacja Accessibility
Blokowanie automatycznego odtwarzania video na gazeta.pl w Google 
Chrome: https://goo.gl/0kCRLS
Technical Details
Message-ID: <oaauv5$1i7t$1@csiph.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!goblin3!goblin1!goblin.stu.neva.ru!feed.usenet.farm!feeder2.usenet.farm!2.eu.feeder.erje.net!feeder.erje.net!1.us.feeder.erje.net!csiph.com!.POSTED.204-73-239-109.cust.centrio.cz!not-for-mail
References: <oaaiu9$jmk$1@news.icm.edu.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!goblin3!goblin1!goblin.stu.neva.ru!feed.usenet.farm!feeder2.usenet.farm!2.eu.feeder.erje.net!feeder.erje.net!1.us.feeder.erje.net!csiph.com!.POSTED.204-73-239-109.cust.centrio.cz!not-for-mail
From: Cezary Tomczyk <cezary.tomczyk@gmail.com>
Newsgroups: pl.comp.lang.javascript
Subject: Re: dlaczego firstChild oraz childNodes[0] mam undefined?
Date: Wed, 15 Mar 2017 09:45:23 +0100
Organization: csiph.com Internet News Service
Message-ID: <oaauv5$1i7t$1@csiph.com>
References: <oaaiu9$jmk$1@news.icm.edu.pl>
Mime-Version: 1.0
Injection-Date: Wed, 15 Mar 2017 08:45:25 +0000 (UTC)
Injection-Info: csiph.com; posting-host="204-73-239-109.cust.centrio.cz:109.239.73.204"; logging-data="51453"; mail-complaints-to="admin@kev009.com"
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:45.0) Gecko/20100101 Thunderbird/45.8.0
In-Reply-To: <oaaiu9$jmk$1@news.icm.edu.pl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit