Sehr sehr seltsames Javascript Problem
Mautzi
- javascript
also ich habe folgende Javascript funktion
function ole(arg) {
alert (arg);
text = document.getElementById(arg).firstChild.nodeValue;
if (text) {
alert (text);
} else {
alert ("kein Text eingegeben");
}
}
dazu habe ich eine textarea mit einer id z.b. mytext
außerdem habe ich einen Button mit onClick='javascript:ole(mytext)'
wenn ich inhalt in meiner textarea habe zeigt er mir das richtig bei alert(text) an,
habe ich aber keinen Inhalt geht er nicht in meinen else abschnitt herein, warum nicht??
url: http://www.webgroove.de/mmeyer/cms/photos.php?id=28
ey nicht die wichtigen ;) Bilder löschen
also ich habe folgende Javascript funktion
function ole(arg) {
alert (arg);
Was wird dir denn hier angezeigt?
text = document.getElementById(arg).firstChild.nodeValue;
Wenn du wirklich eine Textarea hast ist das mit Kanonen auf sPatzen geschossen, soll heißen, du komst wesentlich einfacher an dern Wert:
document.forms[FromName].elements[ElementName].value;
Darüber hinaus ist es immer sinnvoll auch zu testen, ob das passiert was du erwartest.
sprich:
if(!arg) return alert('Fehler kein Argument');
var obj = document.getElementById(arg);
if(obj) return alert('Fehler obj nicht gefunden');
text = obj.firstChild.nodeValue;
aber wie gesagt für Textareas nicht notwendig.
dazu habe ich eine textarea mit einer id z.b. mytext
außerdem habe ich einen Button mit onClick='javascript:ole(mytext)'
Da stecken zwei Nachlässigkeiten drin.
1. ist 'javascript:' hier ein überflüssiges Label, mach es weg (wo hast du das überhaupt her?)
2.) was ist mytext?
Ein normaler Browser hält mytext für eine nicht definierte Variabel und sollte einen entsprechenden Fehler anzeigen. Wie man Fehler findet steh hier http://glasgoogle.de
Struppi.
guck dir das mal bitte auf dem Link an den ich angegeben habe,
das mit dem 'javascript:fds()' hab ich von Flash, da kenn ich mich sowieso besser aus ;)
und die Textarea gehört bei mir nicht direkt zum formular, weil ich ein Fomular in einem Formular brauche, und mir dafür nur Javascript zur verfügung steht.
mytext war nur ein beispiel, guck am besten mal den Link an
guck dir das mal bitte auf dem Link an den ich angegeben habe,
das mit dem 'javascript:fds()' hab ich von Flash, da kenn ich mich sowieso besser aus ;)
Ja, gut aber 'javascript:' ist wie gesagt ein Label, dass nicht nötig ist und es gibt Browser die keine Label kennen und dort erzeugt diese Variante einfach einen Fehlöer.
und die Textarea gehört bei mir nicht direkt zum formular, weil ich ein Fomular in einem Formular brauche, und mir dafür nur Javascript zur verfügung steht.
Es gibt kein Formular in einem Formular, dann ist dein HTML Dokument falsch auf gebaut.
Ja ich habe mir den Link angeguckt (schau mal in der FAQ nach weie man URL anklickbar macht) und sehe das du Strings übergibst. also nicht so wie du es hier beschrieben hast Objekte. Trotzdem ist das was ich gesagt habe richtig.
Struppi.
Ich weiß ja das es kein Formular im Formular gibt, deswegen möchte ich dieses mit Hilfe von Javascript simulieren im Prinzip funktioniert ja auch alles wie ich es haben will,
ich gebe einen Text ein klicke auf ändern, Javascript zeigt mir mein Argument an, richtig.
danach holt es sich die nodeValue und zeigt sie über alert an, auch richtig, das Problem ist lediglich das wenn ich nix inne Textarea reinschreibe, er nicht in meinen Else Teil springt.
Später hab ich natürlich keine Alerts drinne, sondern dann wird der Text an eine Datenbank übergeben.
Ich hoffe das war jetzt verständlich.
Übrigens hab ich die URL auch klickbar in meinem ersten POST (oben) ;) in diesem auch nochma
danach holt es sich die nodeValue und zeigt sie über alert an, auch richtig, das Problem ist lediglich das wenn ich nix inne Textarea reinschreibe, er nicht in meinen Else Teil springt.
Was hast du denn an meinem Tipps nicht verstanden?
Ich bekomm auf deiner Seite eine Fehlermeldung angezeigt und wenn du diese Tipps einfach mal zu Herzen nehmen könntest wären wir jetzt schon viel weiter.
Weißte mir macht das immer wieder Freude. Jemand hat ein Problem oder Frage, ich schreibe ellenlanger Erklärungen um zu helfen, aber das wird schön ignoriert und die Frage einfach 20 mal wiederholt. Du bist nicht sehr kooperativ. Wenn du meine Hilfe nicht willst, sage es einfach.
Struppi.
Fehler lag daran das ich gerade rumgebastelt habe, ich danke dir ja für deine Erklärungen, werde ich auch ausprobieren, aber ich möchte wissen warum meins nicht funktioniert
habe jetzt diese funktion
function ole(arg) {
var text;
if (text = document.getElementById(arg).firstChild.nodeValue) {
alert (text);
} else {
alert ("kein Text eingegeben");
}
}
die auch funktioniert wenn ich etwas in meine Textarea eingegeben habe, allerdings scheint er das script abzubrechen, wenn ich keinen Text eingebe, denn zum else kommt er nicht, ich möchte im Prinzip nur eins wissen, wenn ich
if (text = document.getElementById(arg).firstChild.nodeValue)
abfrage und es true ist macht er was er soll,
aber wenn es false ist kommt er nicht zum else??????
ich finde das sehr merkwürdig??
ok habe jetzt
forms("myform").elements(arg).value
benutzt und es funktioniert, danke danke danke.
bleibt für mich nur die Frage, warum er das Script bei
document.getElementById(arg).firstChild.nodeValue
abbricht wenn da nix drinne ist, aus welchem Grund??
forms("myform").elements(arg).value
benutzt und es funktioniert, danke danke danke.
Das ist nicht ganz richtig, bitte lese doch mal die Sachen die ich dir zeige. Flash Skript und JS ist etwas anderes.
forms("myform").elements(arg).value
document.forms ist keine Funktion genausowenig wie elements.
document.forms["myform"].elements[arg].value
Struppi.
das ist mir klar, so siehts nur eingebaut in meine Funktion aus, arg ist ein argument was er einsetzt
das ist mir klar, so siehts nur eingebaut in meine Funktion aus, arg ist ein argument was er einsetzt
Trotzdem sind die Klammern falsch auch eingebaut in deiner Funktion.
Struppi.
Fehler lag daran das ich gerade rumgebastelt habe, ich danke dir ja für deine Erklärungen, werde ich auch ausprobieren, aber ich möchte wissen warum meins nicht funktioniert
Dass hab ich dir geschrieben, weil du einen Fehler erzeugst.
function ole(arg) {
var text;
if (text = document.getElementById(arg).firstChild.nodeValue) {
Wo überprüpfst du hier ob document.getElementById(arg) einen Wert hat? (wie ich schon in meinem ersten Posting schrieb)
die auch funktioniert wenn ich etwas in meine Textarea eingegeben habe, allerdings scheint er das script abzubrechen, wenn ich keinen Text eingebe, denn zum else kommt er nicht, ich möchte im Prinzip nur eins wissen, wenn ich
if (text = document.getElementById(arg).firstChild.nodeValue)
abfrage und es true ist macht er was er soll,
aber wenn es false ist kommt er nicht zum else??????
ich finde das sehr merkwürdig??
Nein, das ist nich merkwürdig, du erzeugst einen Fehler, danach läuft das Skript nicht weiter.
Wie gesagt ich frage mich, warum du hier mit firstChild und nodeValue arbeitest, wie man Formularelemente abfragt steht hier http://selfhtml.teamone.de/javascript/objekte/elements.htm
Struppi.
so jetzt versteh ich das habe die funktion jetzt so
function ole(arg) {
var text;
text = document.getElementById(arg).value;
if (text != "") {
alert (text);
} else {
alert ("kein Text eingegeben");
}
}
Ich dachte nämlich das ich übers firstChild gehen muss, weil ich das machen muss wenn ich in FLASH ein XML einlese dann wär mein Inhalt
im FirstChild
also bei diesem XML file
<main>
<item1>hallo</item1>
</main>
würde ich in Flash so abfragen
myXML.firstChild.firstChild.firstChild.nodeValue
das muss man auch erstmal checken, das das in Javascript anders funktioniert
und danke nochmal für deine Hilfe, hoffe du verstehst jetzt meine Verwirrung
Hi Mautzi,
function ole(arg) {
var text;
if (text = document.getElementById(arg).firstChild.nodeValue) {
alert (text);} else {
alert ("kein Text eingegeben");
}
}
willst Du wissen ob die Zuweisung klappt oder ob der Text identisch mit dem document.getElementById(arg).firstChild.nodeValue ist?
Du fragst ab ob die Zuweisung klappt.
ciao
romy
Hallo Romy,
willst Du wissen ob die Zuweisung klappt oder ob der Text identisch mit dem document.getElementById(arg).firstChild.nodeValue ist?
Du fragst ab ob die Zuweisung klappt.
Nicht wirklich. Er weist der Variablen text den Wert von document.getElementById(arg).firstChild.nodeValue zu und fragt, ob text ungleich "", 0 bzw. false ist.
Grüße
Andreas
hat sich alles erledigt
so sieht die fertige funktion aus
function ole(arg) {
var text;
text = document.getElementById(arg).value;
if (text != "") {
alert (text);
} else {
alert ("kein Text eingegeben");
}
}
Hi Mautzi,
if (text) {
alert (text);
} else {
alert ("kein Text eingegeben");
}
}
if(text) wird wohl das Problem sein. Wahrscheinlich wegen der Leerzeichen, die bei Textareas mitkommen, wenn ein Umbruch zwischen den tags steht.
if(text.Length>0) wäre die bessere Alternative, allerdings nachdem Du text durch ein trim gejagt hast um die überflüssigen Leerzeichen oder Steuerzeichen wegzubekommen.
ciao
romy