Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> 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
 
Start new topic
Odpowiedzi
thornag
post
Post #2





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 (IMG:http://forum.php.pl/style_emoticons/default/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
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 10.10.2025 - 18:28