myGully.com

myGully.com (https://mygully.com/index.php)
-   Programmierung (https://mygully.com/forumdisplay.php?f=67)
-   -   [JavaScript] <img>-Tag beeinflussen (https://mygully.com/showthread.php?t=2082575)

refLye 23.07.10 15:32

[JavaScript] <img>-Tag beeinflussen
 
Hey,

ich habe bei mir auf der Seite ein img-Tag, welches per onClick-Event eine Funktion aufruft. Die Funktion erkennt, ob eine div-Box ausgeblendet ist oder nicht, und wechselt den Status jeweils. Ich will nun auch noch das Bild, angegeben als src-Option des img-Tags, verändern. Kann mir jemand folgen?

img-Tag (Hier geht es um den src-Teil):
[HTML]<img src='img/dropdown.png' onClick="expand('login_container')">[/HTML]

JavaS*****-Funktion "expand":
[HTML]function expand(which){
var is = document.getElementById(which).style.visibility;

if ( is == "hidden" ) {
document.getElementById(which).style.visibility = "visible";
}
if ( is == "visible" ) {
document.getElementById(which).style.visibility = "hidden";
}
}[/HTML]

Ich will wie gesagt, dass in der jeweiligen if-Schleife das Bild des img-Tags geändert wird, sprich dass sich der src-Pfad verändert.

Kann mir da jemand helfen?

urga 23.07.10 16:39

Code:

<img src='img/dropdown.png' onClick="expand('login_container', this)">

function expand (which, img) {
....
img.src = 'anderes_bild.gif';
}


refLye 23.07.10 17:30

Ich danke dir, perfekt!

EDIT
Ich habe gleich noch eine Frage. Ist es möglich, mittels einem onClick-Event eine div-Box immer weiter zu vergrößern?

Ich hatte vor, das Feld, was sich einblenden soll, von oben heraus auszurollen. Ich dachte mir, das geht mit der größe. In einer while-Schleife immer einen Pixel zur Größe dazuzählen, bis eine bestimmte Größe erreicht ist. Leider scheint der Computer zu schnell zu rechnen, um die Vergrößerung darstellen zu können. Ich habe schon mehrere Seiten Google abgegrast, ich habe es auch schon mit MooTools probiert, die bekomme ich aber nicht so abgewandelt, dass es läuft. Versteht keine Sau, den Code.

[Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...]

Da, die Buttons slide out und slide in der Vertical-Gruppe machen das, was ich versuche habe. Bekommt man das einfacher hin, als mit gefühlten 10 A4-Seiten Code?

urga 23.07.10 18:38

schau mal hier: [Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...]

und gib beim filter ein "slide".

dann klick auf slideToggle(speed, callback)
und schau dir das beispiel (example) an.

mittels jquery löst man alle solche probleme recht elegant und browser-übergreifend.

refLye 23.07.10 19:10

Okay, das herausrollen funktioniert. Ich habe es mit dem Beispiel von jQuery gemacht. Leider gibt es ein Problem. Ich habe zwei Felder, die von zwei getrennten Buttons gesteuert werden sollen. Ein Button blendet das eine Feld ein, der andere das andere. Das jQuery-Skript erkennt den Funktionsaufruf allgemein durch den Auslöser (das HTML-Element) "button". Wie sage ich ihm, der eine Button ruft das eine, der andere Button ruft das andere?

urga 23.07.10 19:26

hm. ohne den entsprechenden code kann ich nicht helfen...

allgemein:
Code:

<div id="blablabal"> ............ </div>

jquery:
$("#blablabal").loese_mein_problem (function() {alert (this);});


refLye 23.07.10 21:05

Danke dir, das war super, du hast mir echt super geholfen!
Aber ein Problem habe ich immer noch.

Es funktioniert jetzt, dass die getrennten Buttons jeder sein eigenes Feld ansteuern. Nur sind die Felder von Anfang an eingeblendet. Die sollen ausgeblendet sein, man muss sich entscheiden, welches Feld eingeblendet werden soll. Hier sind Codeschnipsel:

Button 1 mit dazugehörigem Feld 1:
[HTML]<h1>Login <button id='b1' class='slide'></button></h1><br>
<div id='login_container'>

Inhalt des Containers[/HTML]

Button 2 mit dazugehörigem Feld 2:
[HTML]<h1>Registrieren <button id='b2' class='slide'></button></h1><br>
<div id='register_container'>

Inhalt des Containers[/HTML]

Skript-Code:
[HTML]<s*****>
$(document).ready(function() {
$("#b1").click(function () {
$("#login_container").slideToggle("slow");
});
$("#b2").click(function () {
$("#register_container").slideToggle("slow");
});
});
</s*****>[/HTML]

Natürlich habe ich alle erforderlichen Elemente eingebettet, funktioniert ja schon. Ich will nur, dass sie ab Seitenaufbau ausgeblendet sind. =)

urga 24.07.10 10:56

evntl. mit
Code:

<div id="login_container" style="display : none;">
oder auch
<div id="login_container" style="visibility : hidden;">


refLye 24.07.10 11:13

Ausblenden funktioniert so zwar, jedoch werden sie durch den Funktionsaufruf nicht eingeblendet.

Ich habe eben noch die Zeile
[HTML]$("#login_container").style.visibility("visible" );[/HTML]
vor der Animation eingefügt, also vor der Zeile mit slideToggle, aber das funktioniert auch nicht. =)

Hast du evtl. noch mehr Ideen, oder gibt es das so, wie ich es geschrieben habe, garnicht? Ich kenne dieses Format von JavaS***** zum Beispiel überhaupt garnicht, ich habe das bisher immer mit document.getElementById(""); gemacht. ^^

urga 24.07.10 14:05

du musst irgendwie rausfinden welchen style slideToggle() bedient.
und dann das div im html-code entsprechend initialisieren.

dazu installier dir [Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...]

edit:
vorhin musste ich was ähnliches per jquery machen. mit style="display : none;" hats funktioniert...

refLye 28.07.10 08:00

Hammerhart! urga, ich bin dir echt was schuldig, danke! :-*


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:44 Uhr.

Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.