Variable definieren
Roli
- javascript
Hallo,
Bin der Verzweiflung nahe:
Mein Script sollte folgendermassen funktioniern:
A)
1. Ich klicke einen Button
2. Dadurch wird ein <Div> sichtbar
3. Im <Div> kann ich einen Link anklicken, der <Div> verschwindet.
4. Der Wert des Links wird in einem Textfeld (auf der selben Seite)dargestellt
Soweit ist alles o.k.
Nun:
B)
1. Ich klicke einen anderen Button (auf der selben Seite)
2. Dadurch wird der selbe <Div>-Tag wie bei A) sichtbar
3. Es soll in einem anderen Textfeld der Wert des angeklickten Links aus dem <DIV>-Tag dargestellt werden.
und genau das funzt net.
Wenn ich den Button1 drücke, rufe ich folgende Funktion auf:
function tip1()
{
var buttonvar = document.getElementById( "button1" );
var txtvar = document.getElementById( "textfeld1" );
}
Wenn ich den Button2 drücke, rufe ich diese auf:
function tip1()
{
var buttonvar = document.getElementById( "button2" );
var hexvar = document.getElementById( "textfeld2" );
}
Dann setze ich das value des Textfeldes:
document.getElementById( 'txtvar' ).value = '#' + rgb;
document.getElementById( 'buttonvar' ).style.background = '#' + rgb;
Es gibt keine Fehlermeldung und es passiert auch nichts.
Bin froh um jeden Tip.
Gruss Roli
Hallo Roli,
das ist alles nur schwer begreifbar. Ein Element (in Deinem Beisplie eine <div>) kann man auf viellerleich "verschwinden" lassen. Bevor wir jetzt aber ein Frage-Antwort-Spiel draus machen, halte ich es für das beste, Du postest das gesamte Dokument mit allen (möglicherweise in separate Dateien abgelegten) Scriptbereichen und dem HTML.
Gruß aus Berlin!
eddi
Hallo Roli,
das ist alles nur schwer begreifbar. Ein Element (in Deinem Beisplie eine <div>) kann man auf viellerleich "verschwinden" lassen. Bevor wir jetzt aber ein Frage-Antwort-Spiel draus machen, halte ich es für das beste, Du postest das gesamte Dokument mit allen (möglicherweise in separate Dateien abgelegten) Scriptbereichen und dem HTML.
Gruß aus Berlin!
eddi
Guten Morgen
Kann ich verstehen, dass das ganze verwirrlich daherkommt. Deshalb habe ich einen Link eingerichtet, der genau auf meine Seite zeigt.
(Die Ausdrücke {gGet...} etc.. sind nicht zu beachten).
Am ende einer Zeile sollen schlussendlich überall Buttons stehen. Wenn ich darauf klicke kann ich eine Farbe auswählen und der Hex-Code wird automatisch ins nebenstehende Textfeld geschrieben.
Hier der Link: http://www.the-point.ch/color.htm
Gruss Roli
Hallo Roli,
das ist ein wirklich guter Ansatz. Aber mir fehlt schlichtweg das Verständnis woher sowas kommt (kenne diese Methode überhaupt noch nicht):
<td width="20" height="1" bgcolor="{gGetLayoutVar(Tab.HintergrundFarbe)}">
In der Funktion show() greifst Du auf document.getElementById( "hexvar" ); wobei hexvar und NICHT "hexvar" (also ein string) in tip1() so geblidet wird hexvar = document.getElementById( "hexfeld1" );
Meine Erfahrung nach sind Referenzen auf Elemente des HTMLs nicht so einfach funktionsübergreifen portierbar wie einfache Variablen. Es spricht im übrigen auch nichts dagegen, daß Du show(reg,id) einen zweiten Parameter zukommen läßt und dann in show() direkt auf document.getElementById(id) zugreifst.
Wenn es noch nicht klappt einfach überarbeitete Version einstellen und noch mal nachfragen ;)
Gruß aus Berlin!
eddi
Hoi Eddi,
die Methode gibt es eigentlich gar nicht. Diese Seite wird normalerweise in einem Wenportal dargestellt, welches diese Variabeln intepretiert. Zufälligerweise kann auch der IE damit was anfangen.
Nun zum Problem, ich weiss nicht genau was Du gemeint hast. Kann ich in der Funktion show() effektiv nicht auf die Variable hexvar zugreifen?
Wenn nicht, könnte ich nach Deiner Aussage die Funktion show() mit einem weitern Parameter versehen - wie denn??
Gruss Roli aus Luzern
Moin Roli,
die Methode gibt es eigentlich gar nicht. Diese Seite wird normalerweise in einem Wenportal dargestellt, welches diese Variabeln intepretiert. Zufälligerweise kann auch der IE damit was anfangen.
Nun zum Problem, ich weiss nicht genau was Du gemeint hast. Kann ich in der Funktion show() effektiv nicht auf die Variable hexvar zugreifen?
<html>
<head>
<title>test</title>
<script type='text/javascript'>
function erfasse()
{
var t=document.getElementById('test');
machwas()
}
function machwas()
{
alert(t.tagName)
}
</script>
</head>
<body onLoad='erfasse()'>
<div id='test'>Huhu</div>
</body>
</html>
Im Mozilla -> JavaScript-Konsole ergibt dies eine Fehlermeldung "Fehler: t is not defined Quelldatei: http://localhost/test.html Zeile: 12"
Aber du hast noch einen anderen Fehler gemacht "variablenname" ist ein STRING und keine Referens auf die Variable selbst. Also versucht die Methode getElementById() ein Element zu selektieren, welches die die ID "variablenname" hat.
Bsp: <div id="variablenname"></div>
Wenn nicht, könnte ich nach Deiner Aussage die Funktion show() mit einem weitern Parameter versehen - wie denn??
Du hast doch Deine Felder button[Zahl] und hexfeld[Zahl] benannt. Das kannst Du ganz simpel ausnutzen und anstatt später auf tip1() bis tip4() nutzen zu müssen, streichst Du tipZahl völlig ais Deinem Konzept heraus.
Du übergibst der Funktion nurnoch die Zahlen show(rgb,zahl) und fragst direkt in dieser funktion nach document.getElementById("button"+zahl) und nach document.getElementById("hexfeld"+zahl)
Gruß aus Berlin!
eddi
Hilfe Eddi,
jetzt stehe ich komplett auf dem Schlauch. Habe mich wahrscheinlich schon zulang damit auseinandergesetzt, dass ich vor lauter Bäume den Wald nicht mehr sehe.
Wie zum deifel übergebe ich denn der Funktion die Zahlen ?????
show(rgb,zahl) --> wie definiere ich «zahl»??
Gruss Roli
Hallo,
Wie zum deifel übergebe ich denn der Funktion die Zahlen ?????
show(rgb,zahl) --> wie definiere ich «zahl»??
Die Frage ist mehr als berechtigt! In Zeile 85
document.write('<a href="#" onclick=" ausblenden(); return show('' + rgb + '');" onmouseover="window.status='' + rgb + '';return true;">');
wird show() mit der Variablen rgb gefüttert. Das ist nicht mehr ohne größeren aufwand rückgängig zu machen, da war mein Denkfehler.
In sollchen Fällen erzeuge ich erst die einzublendenden Variablen wenn (um in Deinem Beispiel zu bleiben) einblenden() aufgerufen wird. So habe ich die Möglichkeit mir einblenden(zahl) an alle anderen Funktionen, die den Aufbau der Farbtabellen übernehmen zu übergeben.
funktion einblenden(zahl)
{
outerTable(zahl)
}
function outerTable(zahl)
{
innerTable(zahl)
}
function innerTable(zahl)
{
tableProps(val[i], red,zahl)
}
So kann ich bei onClick='einbelnden(1)' mir das ganze erstmal aufbauen lassen. Das ist in Deinem Fall so einfach nicht möglich, da Du mit document.write() gearbeitet hast.
Aber das ist noch lange nicht das Ende ;). Du kannst Dir ein Element in den Quellcode schreiben, sagen wir <span></span>. Beim aufrufen der Funktion einblenden() greifst Du auf das Element zu document.getElementsByTagName('span')[0] und speicherst eine Variabel in diesem Element:
document.getElementsByTagName('span')[0].id='1'
Nun kannst Du von show() aus durch den gleichen Aufruf Dir diese Variabel auslesen lassen. Alles, was Du noch machen müsstest, ist jedem Button eben für die passenden Textfelder onClick='einblenden(1)' zu notieren.
Gruß aus Berlin!
eddi
Hallo,
Du meinst es wirklich gut mit mir, aber ich verstehe nur noch Bahnhof.
Ich währe Dir das lebenlang dankbar, wenn Du mir den überarbeiteten Code posten könntest.
In ewiger Dankbarkeit, Roli
Hallo Roli ,
Lebenslange Dankbarkeit brauche ich nichtmal, aber vielleicht brauchst Du irgentwann mal einen Programmierer für ein Projekt. Denk an mich ;)
http://eddi.to-grip.de/roli.html
Gruß aus Berlin!
eddi
function tip1()
{
var buttonvar = document.getElementById( "button1" );
var txtvar = document.getElementById( "textfeld1" );
}Wenn ich den Button2 drücke, rufe ich diese auf:
function tip1()
{
var buttonvar = document.getElementById( "button2" );
var hexvar = document.getElementById( "textfeld2" );
}Dann setze ich das value des Textfeldes:
document.getElementById( 'txtvar' ).value = '#' + rgb;
document.getElementById( 'buttonvar' ).style.background = '#' + rgb;Es gibt keine Fehlermeldung und es passiert auch nichts.
Bin froh um jeden Tip.
Es gibt keine Fehlermeldung? http://glasgoogle.de
Dir ist der Unterschied zwischen einem string, einer Varibaeln und lokalen und globalen Variabeln nicht klar. du schmeist schon in diesem kurzen Beispiel alles durcheinander.
var heißt doch definierst die Variabel lokal, d.h. sie ist nur innerhalb des Blocks in dem sie steht gültig ( ein Block wird mit {..} umschlossen).
buttonvar ist ein Variable, die in diesem Beispiel die Referenz auf das Objekt mit der is 'button2' enthalten kann (sofern dieses existiert).
Im Gegensatz dazu ist 'buttonvar' ein String.
Bevor das nicht klar ist ist es natürlich schwer dir weiterzuhelfen.
Struppi.