75032
Goto Top

Brauche Unterstützung bei Javascript

Hi,

ich wollte eine Javascript Funktion schreiben wo wenn ich auf einen Button klicke sich a in b verändert und wenn ich nochmal klicke wieder b in a. Könnt ihr mir eventuell sagen was ich da falsch gemacht habe...

<script type="text/javascript">  
function show_1(){
var v_id_1 = 0;
if(v_id_1 = 0){
document.getElementById('1').style.visibility='visible';  
document.getElementById('id_1').innerHTML = '<-';  
v_id_1 = 1;
}
if(v_id_1 = 1){
document.getElementById('1').style.visibility='hidden';  
document.getElementById('id_1').innerHTML = '->';  
v_id_1 = 0;
}
}
</script>

Danke schonmal im Vorraus
Gruß

Content-Key: 161443

Url: https://administrator.de/contentid/161443

Printed on: April 25, 2024 at 16:04 o'clock

Member: dog
dog Feb 23, 2011 at 17:47:39 (UTC)
Goto Top
function show_1(){

Funktion wird betreten.

var v_id_1 = 0;

Variable wird auf 0 gesetzt

if(v_id_1 = 0){

Variable wird erneut auf 0 gesetzt, 0 wird zu false ausgewertet, IF fällt weg.

if(v_id_1 = 1){

Variable wird auf 1 gesetzt, 1 wird zu TRUE ausgewertet, IF wird ausgeführt

v_id_1 = 0;

Variable wird auf 0 gesetzt.

}

Funktion wird beendet.

Bei jedem Aufruf der Funktion wiederholt sich obiges.
Member: Arano
Arano Feb 23, 2011 at 17:52:00 (UTC)
Goto Top
Hallo Schelli,

da sind zwei Dinge:
1. Eine ID muss mit einem Buchstaben __beginnen__: Basic HTML data types (w3.org)
ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods (".").
2. Ist deine Javascript-Funktion falsch (logischer Fehler)
Lass uns mal davon ausgehen, dass das Element nicht sichtbar (hidden / 0) ist und die Funktion aufgerufen wird.
1. Setze v_id_1 auf 0
2. Erste Bedingung: v_id_1 ist gleich 0 also
3. mach das Element sichtbar (visibel / 1) und
4. setze auch v_id_1 auf 1
5. Zweite Bedingung: v_id_1 ist gleich 1 also (wurde ja gerade von 0 auf 1 geändert, siehe Punkt 4)
6. mach das Element unsichtbar (hidden / 0) und
7. setze auch v_id_1 auf 0
ENDE

Beim nächstem Aufruf passiert __exakt__ das gleiche ! weil der Funktionsaufruf die Variabel v_id_1 als erstes IMMER auf 0 setzt !
Falls das dein Ziel war hast du es erreicht face-wink

Du __müsstest__ die Variable also außerhalb der Funktion definieren damit sich nicht immer beim Funktionsaufruf "zurückgesetzt" wird.
Und deine Bedingungen solltest du in ein
if(v_id_1 == 0)
{
    // wenn v_id_1 == 0
    // mach es sichtbar 
}
else
{
    // andernfalls
    // mach es unsichtbar
}
verpacken, dann wird entweder der erste ODER der zweite Block ausgeführt.


Und nun noch ein Tipp:
"document.getElementById('block_1').style.visibility" kannst du auch als Bedingung verwenden:
if( document.getElementById('block_1').style.visibility != "visible" ){ // machs sichtbar}  
else{ //machs unsichtbar }


Alle Angaben ohne Gewähr und Funktionstests

Schönen Gruß
~Arano


Edit: Den ollen Zuweisungs-Vergleichs-Fehler habe ich glatt übersehen
Mitglied: 75032
75032 Feb 23, 2011 at 18:12:09 (UTC)
Goto Top
"document.getElementById('block_1').style.visibility" kannst du auch als Bedingung verwenden:
if( document.getElementById('block_1').style.visibility != "visible" ){ // machs sichtbar}  
> else{ //machs unsichtbar }

Hi,
genau das hat geholfen!

Vielen Dank für eure Antworten
Member: dog
dog Feb 23, 2011 at 18:15:01 (UTC)
Goto Top
Schau dir trotzdem an, was ich geschrieben habe und vorallem: verstehe es.
Sonst machst du immer wieder die selben Fehler.
Mitglied: 75032
75032 Feb 23, 2011 at 18:26:18 (UTC)
Goto Top
Klar hab ich verstanden und das mit den 2 "==" im if hab ich irgendwie verplant...
Member: EvilMoe
EvilMoe Feb 23, 2011 at 18:38:16 (UTC)
Goto Top
Mit Jquery lassen sich solche abfragen ziemlich vereinfachen. Desweiteren bietet es auch eine Menge an Funktionen ohne viel selber programmieren zu müssen.
http://jquery.com/


Meine Vorredner haben den Rest schon gesagt und kann mich nur anschließen.
Mitglied: 75032
75032 Feb 23, 2011 at 20:05:52 (UTC)
Goto Top
Mit Jquery habe ich mich noch nicht befasst und eigentlich programmiere das lieber selber dann weis ich wies funktioniert

Gruß
Member: EvilMoe
EvilMoe Feb 23, 2011 at 20:09:39 (UTC)
Goto Top
Die Funktion bleibt meistens gleich. Man spart sich aber eine menge schreiberei.
z.B. aus "document.getElementById('block_1')"
wird "$(#block_1)".

Ist auch nur ein kleiner Hinweis.