Skocz do zawartości

[js] Dodawanie Obsługi Znarzeń


mess_alex

Rekomendowane odpowiedzi

Witam,

Tworzę tabelę przez DOM JavaScript i chcę niektórym komórkom ustawić atrybuty:

onmouseover="tip('2', 'show')"
onmouseout="tip('2', 'hide')"

Gdzie "2" dalej będzie nazywana zmienną z (gdyż nie zawsze będzie miała wartość 2).

Po przeczytaniu książki wzbogaciłem swoją wiedzę o informację, że można to zrobić za pomocą metody addEventListener.

Wszystko działa poprawnie dopóki nie zechcę dodać jakiś parametrów - wytłumaczę na przykładzie:

myObject.addEventListener("mouseover", show, false);
myObject.addEventListener("mouseout", hide, false);

Działa bez zastrzerzeń, lecz:

myObject.addEventListener("mouseover", tip(z, "show"), false);
myObject.addEventListener("mouseout", tip(z, "hide"), false);

Po pierwsze wykonuje funkcję tip(z, "show") wraz z załadowaniem strony (a powinna zostać wykonana dopiero po mouseover dla objektu myObject), a po drugie wypluwa błąd.

Error: uncaught exception: [Exception... "Could not convert JavaScript argument" nsresult: "0x80570009 (NS_ERROR_XPC_BAD_CONVERT_JS)" location: "JS frame :: file:///D:/Ksi%C4%85%C5%BCki/JavaScript.%20Zaawansowane%20Programowanie/Rozdzial_09/EventHandler1.htm :: postLoadInit :: line 10" data: no]

Kod:

<HTML>
<HEAD>
<script LANGUAGE="JavaScript">
var myObject;

function postLoadInit()
{
myObject = document.body.childNodes[1];

var z = 2; // Na przykład

myObject.addEventListener("mouseover", tip(z, "show"), false);
myObject.addEventListener("mouseout", tip(z, "hide"), false);
}
function tip(day, action)
{
alert("Day ma wartosc: " + day + ", a action: " + action);
}
</SCRIPT>
</HEAD>
<BODY onload="postLoadInit()">
<div>Goodbye Cruel World</div>
<span onmouseover="tip('3', 'show')" onmouseout="tip('3', 'hide')">To działa, więc w funkcji tip nie ma błędów.</span>
</BODY>
</HTML>

Moje pytanie brzmi: Jak mogę dodać funkcje z argumentami do obiektu jako obsługę zdarzeń mouseover i mouseout?

Z góry dziękuję za odpowiedź i pozdrawiam

Zespół Downa - porady, ważne informacje dla rodziców, rodzeństwa, opiekunów.
Odnośnik do komentarza
Udostępnij na innych stronach

To nie tyle wiedza z zakresu JS ale ogólnie w temacie programowania.

zamiast:

myObject.addEventListener("mouseover", tip(z, "show"), false); // tutaj wywolujesz funkcie tip!
powinno być
myObject.addEventListener("mouseover", new Function("tip("+z+", \"show\")"), false); // tutaj tworzysz funkcje wywolujaca funkcje tip

albo po prostu najzwyczajniej:

myObject.onmouseover = new Function("tip("+z+", \"show\")");

P.S Widze, że ksiązki z helionu to konkretny badziew...

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności