[PR] [JS] zdarzenie w dynamicznym elemencie

0

Tworze sobie element dynamicznie i przypisuje do niego kilka wlaściwości:

var _a = document.createElement( "span" );
_a.appendChild( document.createTextNode( "zawartosc span'a" );

i jak teraz dodac do niego zdarzenie onclick? tak by po kliknieciu w niego wykonywala sie f-cja l(); ???

0

IMO powinno pomóc [code]_a.onclick=funkcja[/code]

0

Probowałem ale to daje efekt, że ta funkcja jest wywoływana a nie przypisywana... :(

0

Jak to wywoływana? Jak dasz "onclick" ?? Powinna sie wywoływać dopiero przy kliknięciu.

0
var _a = document.createElement("span");
_a.appendChild(document.createTextNode("zawartosc span'a"));
_a.onclick = function()  {
  alert("click!");
}
window.onload = function() {
  document.body.appendChild(_a)
}

albo

function f() {
  alert("click!");
}
_a.onclick = f;
0

Super działa, ale nie do końca tak jak chciałem albo ja coś źle robię...

Mam taką funkcję, której za zadanie jest rysowanie elementów menu jako

function draw_menu( obj, container ) {
    var div_Menu = document.getElementById( container );
    for( var x in obj ) {
        var _a = document.createElement( "span" );
        _a.appendChild( document.createTextNode( obj[x][0] ) );
        _a.onclick=function() {
            window.location = obj[x][1];
        };
        div_Menu.appendChild( _a );
        div_Menu.appendChild( document.createTextNode( " " ) );
    }
}

I wywołuję ją w następujący sposób:

<body>
    <div id="menu"> </div>
    <script type="text/javascript">
    <!-- /* <![CDATA[ */
        var ar_Menu = [
            ['Opis linka 1', 'strona.html'],
            ['Opis linka 2', 'about.html'],
            ['Opis linka 3', 'index.html']
        ];
        draw_menu( menu, "menu" );
    // /* ]]> */ -->
    </script>

No ale jest problem bo wszystkie 3 elementy prowadzą na ten sam adres czyli index.html...
I teraz moje pytanie: czy muszę jakoś nadawać unikalny identyfikator dla każdego linka (czyli dla każdego _a), jeżeli tak to jak [???]

0

to jest kwestia tego jak sa przekazywane wartosci do definicji tej funkcji, jak zrobisz tak:

_a.test_val = obj[x][1];
_a.onclick = function() {
  location.href = this.test_val;
};

to jest OK.

0

Dzięki piechnat. Działa doskonale :] [browar] [browar] [browar]

1 użytkowników online, w tym zalogowanych: 0, gości: 1