javscript auf Menüpunkt legen, die Zweite
am 12.08.2009 - 07:24 Uhr in
Hi ihrs,
nachdem bei meinem letzten Post die Frage "falsch gelesen" wurde, hier der zweite Anlauf:
Ich versuche gerade "javascript: toggleDiv('first_layer',1)" auf einen Menüpunkt zu legen - der frisst das aber nich, sondern will immer einen "gültigen" Link (http:// ..., oder Drupal-Link)
Ich will damit einen Layer aufpoppen lassen, der einen view-beinhaltet. Eigentlich will ich das auch eher als rollover - Aber da muss ich vermutilch die menu-render-Funktion umschreiben. Ich glaub das is mir zu heavy, außer jemand kann mir kurz sagen wie ich nen onmouseover bzw. nen onmouseout in die Menü-Theme-Funktion reinrendern kann ...
Ansonsten: wie kann ich die javascript-Funktion ausführen lassen?
Danke im Voraus
stone
- Anmelden oder Registrieren um Kommentare zu schreiben
Sowas macht man schon ewig
am 12.08.2009 - 07:46 Uhr
Sowas macht man schon ewig nicht mehr so. Inline-JS ist zu vermeiden, wo es nur geht - und es geht eigentlich immer. Stattdessen nötigenfalls das Menu so themen, dass jeder Menüpunkt eine eigene Klasse hat, dann kann man ihn bequem aus JS (bei Drupal ist jQuery die Waffe der Wahl) direkt ansprechen.
--
mortendk: everytime you use contemplate... Thor is striking down from above with his mighty hammer - crushing and killing a kitten!
webseiter.de
Suchmaschinenoptimierung (SEO) & Drupal
ich habe für jeden
am 12.08.2009 - 08:29 Uhr
ich habe für jeden Menüpunkt eine eigene id, über die ich jeden Menüpunkt ansprechen könnte. Nun habe ich ein kleines Verständnisproblem: Ich will ja zur Laufzeit testen, ob ein "hover" stattfindet. Das heißt ein statisches Script das mit onLoad im Body geladen wird und testet ob die Maus über dem Menü ist, hilft mir da nich weiter. Muss ich nich die Testfunktion aufrufen, wenn die Maus über dem Menüpunkt ist? Und ist das nich schon wieder ein Javascript AUF nem Menübutton (onmouseover)?
Vermutlich steh ich grad aufm Schlauch - aber vielleicht hilft du mir das Wasser zum fließen zu bringen, wäre klasse. ;)
Dank im Voraus und Grüße
F.
Nein, weil sich die halbwegs
am 12.08.2009 - 09:10 Uhr
Nein, weil sich die halbwegs modernen Javascripts in den DOM-Tree einhängen, den der Browser aus dem HTML-Dokument erzeugt und dort gewissermaßen Event-Listener registrieren.
Vllt. fängste mal gaaanz langsam an dich mit jQuery zu befassen. Such mal nach "jquery tutorial" in einer SuMa deiner Wahl.
--
mortendk: everytime you use contemplate... Thor is striking down from above with his mighty hammer - crushing and killing a kitten!
webseiter.de
Suchmaschinenoptimierung (SEO) & Drupal
Ich hatte da mal ein ganz
am 12.08.2009 - 13:43 Uhr
Ich hatte da mal ein ganz ähnliches Problem. Ich wollte damals, dass beim erstellen eines Users ein Textfeld "erscheint", wenn man eine ganz bestimmte Rolle auswählt. Das sah dann ungefähr so aus:
window.onload = function()
{
if(window.addEventListener)
{
document.getElementById("edit-roles-4").addEventListener('change', show_field, false);
//für Firefox, Opera usw.
} else
{
document.getElementById("edit-roles-4").attachEvent('onclick', show_field);
//für Internet Explorer
//onchange funktioniert im IE anders als in den anderen Browsern
//das Event wird erst aktiv nach dem der Fokus von dem Element genommen wird
//deshalb die Verwendung von onclick
}
if (!document.getElementById("edit-roles-4").checked)
{
document.getElementById("edit-profile-kdnr-wrapper").style.display = 'none';
document.getElementById("edit-profile-kdnr").value = '';
}
}
function show_field()
{
if (!document.getElementById("edit-roles-4").checked)
{
document.getElementById("edit-profile-kdnr-wrapper").style.display = 'none';
document.getElementById("edit-profile-kdnr").value = '';
}
else
{
document.getElementById("edit-profile-kdnr-wrapper").style.display = 'inline';
}
}
Eingebunden hab ich die JavaScript-Datei dann mit
<?php
drupal_add_js("[Pfad zur Datei]/datei-name.js");
?>
innerhalb meines Moduls. Eventuell hilft dir das ja weiter.
Sei doch nicht so grausam zu
am 12.08.2009 - 13:48 Uhr
Sei doch nicht so grausam zu ihm, so lange er noch jung und unerfahren ist und damit die Möglichkeit hat, gleich mit jQuery einzusteigen, anstatt mit so handgeklöppeltem Zeug rumzuhantieren... ;-)
--
mortendk: everytime you use contemplate... Thor is striking down from above with his mighty hammer - crushing and killing a kitten!
webseiter.de
Suchmaschinenoptimierung (SEO) & Drupal
js
am 12.08.2009 - 13:52 Uhr
Und das lässt sich mit jQuery so schreiben (ungetestet):
$(function () {
$('#edit-roles-4').click(function () {
if ($(this).attr('checked') == 'checked')) {
$('#edit-profile-kdnr-wrapper').show();
}
else {
$('#edit-profile-kdnr-wrapper').hide();
$('#edit-profile-kdnr').value('');
}
});
});
hth,
Stefan
--
sei nett zu Deinem Themer
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Zitat:Und das lässt sich
am 12.08.2009 - 14:15 Uhr
Und das lässt sich mit jQuery so schreiben (ungetestet):
$(function () {
$('#edit-roles-4').click(function () {
if ($(this).attr('checked') == 'checked')) {
$('#edit-profile-kdnr-wrapper').show();
}
else {
$('#edit-profile-kdnr-wrapper').hide();
$('#edit-profile-kdnr').value('');
}
});
});
hth,
verdammt .... das is so viel hübscher als meins T_T
aber immerhin sieht man jetzt mal beide Varianten im direkten Vergleich. Jetzt darf sich stone_d eine aussuchen :-)
js #2
am 12.08.2009 - 14:54 Uhr
:-)
Und es geht vermutlich sogar noch kürzer:
$(function () {
$('#edit-roles-4:checked').click(function () {
$('#edit-profile-kdnr-wrapper').show();
});
$('#edit-roles-4').not(':checked').click(function () {
$('#edit-profile-kdnr-wrapper').hide();
$('#edit-profile-kdnr').value('');
});
});
hth,
Stefan
--
sei nett zu Deinem Themer
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
ähm - danke ... hatte
am 21.08.2009 - 14:45 Uhr
Sei doch nicht so grausam zu ihm, so lange er noch jung und unerfahren ist und damit die Möglichkeit hat, gleich mit jQuery einzusteigen, anstatt mit so handgeklöppeltem Zeug rumzuhantieren... ;-)
... schön überhebliche Ausdrucksweise. Vermutlich darf man das ab 2000 Beiträgen :D
Apropos: hatte jQuery recht schnell kapiert und bereits gelöst :)