ďťż
Podstrony
|
telcocafeWitam,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 A spróbuj zamienić: myObject.addEventListener("mouseover", tip(z, "show"), false); myObject.addEventListener("mouseout", tip(z, "hide"), false); na: myObject.addEventListener("mouseover", 'tip(z, "show")', false); myObject.addEventListener("mouseout", 'tip(z, "hide")', false); ? Ach, i może jeszcze daj funkcję tip przed tą, gdzie wykonujesz powyższy kod :) Użytkownik pbnan edytował ten post 30 styczeń 2007, 17:37 |
|||
Sitedesign by AltusUmbrae. |