Javascript: Parameter an Funktion übergeben

chrigu

chrigu

Aktives Mitglied
Thread Starter
Dabei seit
08.03.2004
Beiträge
155
Reaktionspunkte
0
Code:
<script type="text/javascript">

function bgschieb (pixel, elementId) {
    if (document.all && 'document.all.' + elementId + '.style.setAttribute') {
        'document.all.' + elementId + '.style.setAtrribute("backgroundPosition", "' + pixel + '", "false")';
    } else {
        'document.getElementById("' + elementId + '").style.backgroundPosition' = pixel ;
    }
}
</script>
<ul>
<li id="navi_home" onMouseover="bgschieb(-79px, navi_home)"><a href="#" title="Home">home</a>
</li>
</ul>

Vielleicht erklärt das Script mein Vorhaben. Leider werden die Werte -79px und navi_home nicht von der Funktion verarbeitet, ich weiss allerdings nicht wie die Variablen innerhalb der Funktion notiert werden müssen.

Das Script läuft nur mit fest definierten Werten innerhalb der Funktion, was aber nicht unbedingt zweckmässig ist.

Ich danke schon mal für die guten Tips

Gruess Chrigu
 
Moin,

das sollte mit einfachen Hochkommata gehen:

HTML:
<li id="navi_home" onMouseover="bgschieb('-79px', 'navi_home')">
 
Richtig. Aber wäre es nicht einfacher, das über css zu machen? Da kannst du auch in den Link-Status :)link, :active, :hover, :visited) angeben, welcher Teil des Hintergrundbildes angezeigt werden soll.

Matt
 
@lindic: Ok, ich hab jetzt noch die Hochkommatas eingefügt, wie in deinem Beispiel, leider ohne Erfolg. Ich bin mir immer noch unsicher, ob meine schreibweise so korrekt ist, wie oben angegeben. Ist das überhaupt so möglich? Ich hab das bisher nur in PHP angewendet, sollte doch auch mit Javascript funkioneren?

@msslovi0: Das wollte ich zuerst so machen, aber Safari will nicht sobald ein Selektor mit a:hover und einer fest definierten Breite, Höhe und Position definiert wurde. Mit Firefox gings.
 
Der Javascript-Code hat, zumindest auf den ersten Blick, nichts falsches. Die JS-Konsole von Firefox hat sich aber als recht brauchbar erwiesen, wenn es darum geht JS-Code zu debuggen.

Bzgl. css: Dieses Beispiel funktioniert bei mir plattform- und browserübergreifend fehlerfrei.

Matt
 
Ueehh... was fürn Zufall, du bist nicht etwa derjenige, der diese absolut perfekte Website Bartelme Design gebaut hat.

Ich habe letzte Woche von einem Arbeitskollegen diesen Link bekommen, und stand dann am Wochenende staunend vor der Glotze. Es hat mich dann ermutigt an meinem Upgrade meiner Page weiter zu arbeiten. Jetzt staune ich nicht schlecht, dass der "Meister" höchstpersönlich mir Beihilfe leistet ;)

Bin zurzeit auf Arbeit, aber werde am Abend mal den Source-Code auf meinen Webspace uploaden und versuchen die CSS Lösung in Angriff zu nehmen, vielleicht kannst du mir dann noch ein paar weitere Tips geben.

THX! Chrigu
 
Code:
function bgschieb (pix, elementId) {
var pixel=pix+'px';
    if (document.all && 'document.all.' + elementId + '.style.setAttribute') {
        'document.all.' + elementId + '.style.setAtrribute("backgroundPosition", "' + pixel + '", "false")';
    } else {
        'document.getElementById("' + elementId + '").style.backgroundPosition' = pixel ;
    }
}
</script>
<ul>
<li id="navi_home" onMouseover="bgschieb(-79, 'navi_home')"><a href="#" title="Home">home</a>
</li>
</ul>

Oder wie im o.g. Beispiel ein Integer als Pixelparameter übergeben und direkt in der Funktion den Maßeinheitenstring konkatenieren.

Yves
 
Zuletzt bearbeitet von einem Moderator:
@Yves: Danke für den Tip! werde das am Abend mal korrigieren.

Gruess Chrigu
 
chrigu schrieb:
Ueehh... was fürn Zufall, du bist nicht etwa derjenige, der diese absolut perfekte Website Bartelme Design gebaut hat.

Ich habe letzte Woche von einem Arbeitskollegen diesen Link bekommen, und stand dann am Wochenende staunend vor der Glotze. Es hat mich dann ermutigt an meinem Upgrade meiner Page weiter zu arbeiten. Jetzt staune ich nicht schlecht, dass der "Meister" höchstpersönlich mir Beihilfe leistet ;)

Ich muss dich da enttäuschen, ich bin leider nicht der Meister pesönlich. Ich hatte eigentlich nur keine Lust, ein eigenes Beispiel zu schreiben :D Ich nutze die Seite aber immer wieder gerne, um mich mit Ideen zu versorgen.

Es ist in der Tat beeindruckend, was Wolfgang Bartelme da ins Netz gestellt hat.

css-Tipps kannst du von mir natürlich trotzdem bekommen.


Matt
 
Zuletzt bearbeitet:
Ok, ich habe das ganze mal auf den Webserver hinauf geschaufelt.

Beispiel

Ich habe nun die Funktion soweit modifiziert, das nur der Integer übergeben wird (ohne Massangabe).

Das Problem liegt meiner Meinung noch an einem anderen Ort. Irgendwie wird die Funktion gar nicht aufgerufen und ich verstehe nicht was hier falsch läuft (siehe "test" link, ganz oben). Wer hat den Durchblick?

Besten Dank schonmal für Hinweise

Gruss Chrigu
 
Zuletzt bearbeitet von einem Moderator:
Versuche es mal so:
Code:
function bgschieb (pix, elementId) {
    var pixel = pix + 'px';
    if(document.all && document.all[elementId].style.setAttribute) {
        document.all[elementId].style.setAtrribute("backgroundPosition",pixel,"false");
    } else {
        document.getElementById(elementId).style.backgroundPosition=pixel;
    }
}

Ist allerdings ungetestet, da ich hier keinen IE habe.

HTH :)

[edit]
Im letzten Statement müssen die Leerzeichen weg. Die schummelt das Board da irgendwie rein...
[/edit]
 
Zuletzt bearbeitet von einem Moderator:
Thanx! hat geklappt,

allerdings ohne den Leerschlag im JS-Objekt zwischen …style. und backgroundPosition… ;)

Noch einen schönen Tag

Chrigu
 
Zuletzt bearbeitet:
Zurück
Oben Unten