Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> drzewo DOM relatywnie i przypisywanie zdarzenia wielu elementom
onlyX
post
Post #1





Grupa: Zarejestrowani
Postów: 119
Pomógł: 0
Dołączył: 15.07.2003
Skąd: Grajewo

Ostrzeżenie: (0%)
-----


Problem: Mam grupę linków umieszczonych w różnych blokach DIV, w tych samych blokach są inne linki, z których, po kliknięciu na te pierwsze, chcę wyciągnąć innerHTML, a następnie wstawić do pola TEXTAREA.

Jak na razie udało mi się zrobić tylko to ostatnie:
  1. function userAnswer(){
  2. var tresc = document.getElementById('commbody');
  3. tresc.value += "\n wyciągnięty tekst: ";
  4. }


Chcę uniknąć wpisywania onClick="" każdemu linkowi z osobna, ale nie wiem jak przydzielić je całej grupie elementów o takim samym parametrze w class lub name.

Nie wiem też jak odnieść się do elementu relatywnie w stosunku do tego, dla którego zaszło zdarzenie. Przykładowo dwa razy w górę a potem getElementById('link'). Kiedy używam this to wychodzi referencja do dokumentu a nie do elementu wywołującego zdarzenie.

Trochę to pogmatwałem, ale mam nadzieję, że rozumiecie o co mi chodzi.

Mniej więcej wyglądało by to tak:
  1. function userAnswer(){
  2. nick = elKlikniety.rodzic.rodzic.getElementById('odp').innerHTML;
  3. var tresc = document.getElementById('commbody');
  4. tresc.value += "\n wyciągnięty tekst: ";
  5. }
  6. //tutaj przypisanie w.w. funkcji do elementów od takim samej clasie lub name


Proszę o jakieś wskazówki.
Go to the top of the page
+Quote Post
woj_tas
post
Post #2





Grupa: Zarejestrowani
Postów: 230
Pomógł: 36
Dołączył: 31.03.2006
Skąd: Zielona Góra

Ostrzeżenie: (0%)
-----


Cytat(onlyX @ 20.03.2007, 23:20:30 ) *
Chcę uniknąć wpisywania onClick="" każdemu linkowi z osobna, ale nie wiem jak przydzielić je całej grupie elementów o takim samym parametrze w class lub name.


nie dawno miałem podobny problem... link


--------------------
Go to the top of the page
+Quote Post
onlyX
post
Post #3





Grupa: Zarejestrowani
Postów: 119
Pomógł: 0
Dołączył: 15.07.2003
Skąd: Grajewo

Ostrzeżenie: (0%)
-----


Tego szukałem.
A więc koncepcja rozwinęła się do takiego stadium:
  1. function userAnswer(){
  2. var nick = ten_element.rodzic.rodzic.getElementById('nick').innerHTML; // <-- poprawić!!!
  3. var tresc = document.getElementById('commbody');
  4. tresc.value += "\n nick: ";
  5. }
  6. function setBehaviour(){
  7. var linki = document.getElementById('komentarze').getElementsByTagName('a');
  8. for(i=0; i < linki.length; i++){
  9. if (linki[i].className=='answer') linki[i].onclick = userAnswer;
  10. }
  11. }


Teraz pozostało tylko odnaleźć w drzewie DOM drugi link i wyciągnąć z niego innerHTML. Może mi ktoś w tym pomóc, albo wskazać jakieś źródło informacji?
Go to the top of the page
+Quote Post
gekon
post
Post #4





Grupa: Zarejestrowani
Postów: 614
Pomógł: 7
Dołączył: 10.11.2003
Skąd: Rzeszów/Kraków

Ostrzeżenie: (0%)
-----


http://pornel.net/xhtml
http://developer.mozilla.org/pl/docs/DOM


--------------------
Pokaż kod = Pokaż CAŁY kod, najlepiej działający na jakimś serwerze.
Fanatycy | glazar.info | semantyka | HTML i XHTML FAQ
Go to the top of the page
+Quote Post
onlyX
post
Post #5





Grupa: Zarejestrowani
Postów: 119
Pomógł: 0
Dołączył: 15.07.2003
Skąd: Grajewo

Ostrzeżenie: (0%)
-----


Czy ktoś mi wytłumaczy jak odwołać się w JS do elementu który wywołał zdarzenie, bo nie mogę tego znaleźć w żadnych materiałach?
Gdy używam this. to wyrzuca mi cały dokument.
Go to the top of the page
+Quote Post
thornag
post
Post #6





Grupa: Zarejestrowani
Postów: 504
Pomógł: 2
Dołączył: 31.03.2006
Skąd: Londyn

Ostrzeżenie: (0%)
-----


To w JS jest dosc skomplikowane bo przy zdarzeniu this nigdy nie bedzie sie odnosilo do obiektu w ktorym definiujesz metode. Ja to robie tak biggrin.gif

Kod
var ObjectStorage = new Object();

  TestObject = function() {

         var iObjectId = ObjectStorage.length;
         ObjectStorage[iObjectId] = this;

         this.TestVar = 'zawartosc testowa';

         document.getElementById('testDiv').onclick = function(e) { ObjectStorage[iObjectId].DoOnClick(e) }

  }

  TestObject.prototype = {

   DoOnClick : function(e) {
        if(document.all)e = event;
        var oTarget;
    if (e.target) {
        oTarget = e.target;    
    } else if (e.srcElement) {
        oTarget = e.srcElement;
    }
    if (oTarget.nodeType == 3) { //For Safari
        oTarget = oTarget.parentNode;
    }
    alert(oTarget.id);
    alert(oTarget.innerHTML);
         alert(this.TestVar);

    }
}

document.body.onload = function () { var oObject = new TestObject() }


  1. <div id='testDiv'>aosbdasbd</div>


pisalem z palca wiec nie wiem czy syntaxow nie ma itp, ogolnie koncepcja taka jesli chodzi o to zryte referowanie przez JS


--------------------
"Wizja czasu jest szeroka, lecz kiedy sie przez nia przechodzi, czas staje sie waskimi drzwiami"

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 23:30