Probleme mit Bildertausch

M

maus83

Guest
Ich quäle mich schon einige Zeit mit folgendem Problem:
Im head meiner Webseite habe ich eine kontakt.js eingebunden.
In der per Ajax in ein entsprechendes div eingefügten kontakt.html existiert folgender Code innerhalb einer form:
Code:
<td class="label"><label for="Name">Name:</label></td>
<td class="inhalt"><input type="text" name="Name" size="auto" onkeyup="testName(this.value)"></td>
<td class="zeichen"><img name= "bildEmailName" src="/images/pflicht.gif" alt="" /></td>
Nun möchte ich aus der Funktion testName() auf das Bild name= "bildEmailName" zugreifen und es entsprechend austauschen.
Der Code von kontakt.js:
Code:
jaBild = new Image();
jaBild.scr = "/images/yes.gif";

function testFormular() {
	alert("Das Kontaktformular befindet sich in Arbeit");
	return false;
}
function testName(wert) {
	document.bildEmailName.scr=jaBild.scr;
}
this.Value wird korrekt übergeben, aber auf bildEmailName scheint aus dem Script heraus kein Zugriff möglich.
Vermutlich mache ich wieder einmal einen sehr einfachen Denkfehler, aber Programmieren ist leider nicht meine Stärke. Für Hilfe wäre ich deshalb sehr dankbar.
 
Ich quäle mich schon einige Zeit mit folgendem Problem:
Im head meiner Webseite habe ich eine kontakt.js eingebunden.
In der per Ajax in ein entsprechendes div eingefügten kontakt.html existiert folgender Code innerhalb einer form:
Code:
<td class="label"><label for="Name">Name:</label></td>
<td class="inhalt"><input type="text" name="Name" size="auto" onkeyup="testName(this.value)"></td>
<td class="zeichen"><img name= "bildEmailName" src="/images/pflicht.gif" alt="" /></td>
Nun möchte ich aus der Funktion testName() auf das Bild name= "bildEmailName" zugreifen und es entsprechend austauschen.
Der Code von kontakt.js:
Code:
jaBild = new Image();
jaBild.scr = "/images/yes.gif";

function testFormular() {
	alert("Das Kontaktformular befindet sich in Arbeit");
	return false;
}
function testName(wert) {
	document.bildEmailName.scr=jaBild.scr;
}
this.Value wird korrekt übergeben, aber auf bildEmailName scheint aus dem Script heraus kein Zugriff möglich.
Vermutlich mache ich wieder einmal einen sehr einfachen Denkfehler, aber Programmieren ist leider nicht meine Stärke. Für Hilfe wäre ich deshalb sehr dankbar.

Meiner Meinung nach hast du folgenden Denkfehler:
mit document.XXX greifst du auf ein Objekt zu welches die ID XXX hat und nicht den Namen. (Diesbezüglich kann ich mich auch irren, bitte bescheid sagen, falls es doch der Name sein sollte.)

Probiere doch einmal in der Funktion "testName" folgendes:
Code:
document.getElementById('bildEmailName').src

Desweiteren würde ich überhaupt einmal "src" statt "scr" schreiben.

Hier dein veränderter HTML-Quellcode:
Code:
<td class="label"><label for="Name">Name:</label></td>
<td class="inhalt"><input type="text" name="Name" size="auto" onkeyup="testName(this.value)"></td>
<td class="zeichen"><img id="bildEmailName" src="/images/pflicht.gif" alt="" /></td>

Und hier der JS-Quellcode:
Code:
jaBild = new Image();
jaBild.src = "/images/yes.gif";

function testFormular() {
	alert("Das Kontaktformular befindet sich in Arbeit");
	return false;
}
function testName(wert) {
	docdocument.getElementById('bildEmailName').src = jaBild.src;
}

Ich habe es jetzt nicht testen können. Bitte melde dich daher ob es funktioniert oder nicht.

Mfg
 
Zuletzt bearbeitet:
Leider nicht die Lösung.
Ich habe die Änderung vorgenommen und erhalte: Fehler: 'document.getElementById(...)' ist Null oder kein Objekt.
Da ich dem Bild kein id, sondern einen name gegeben habe, sollte das wohl auch so sein. Aber auch wenn ich name zu id ändere, ergibt sich keine Besserung.
Anscheinend kann ich aus dem Skript nicht per document.bildEmailName auf das entsprechende Bild zugreifen.
Den Hinweis mit src nehme ich dankbar entgegen. Leider hat auch die Korrektur nichts gebracht.
 
Meiner Meinung nach hast du folgenden Denkfehler:
mit document.XXX greifst du auf ein Objekt zu welches die ID XXX hat und nicht den Namen. (Diesbezüglich kann ich mich auch irren, bitte bescheid sagen, falls es doch der Name sein sollte.)
Du irrst dich. Es ist genau umgekehrt.

Der Code von maus83 macht aber wenig Sinn und auch die Frage erschleißt sich nicht daraus. Der einzige tipp der sinnvoll ist: schau mal in die Fehlerkonsole!
Welche Fehlermeldung gibt es.
 
Zuerst einmal vielen Dank für die Hilfe.
Vielleicht noch einmal zur Verdeutlichung. Die Webseite fügt über Ajax.updater(prototype) im Falle des Kontaktformulars folgende Datei in das Inhalts-div (kompl. Code):
Code:
<form name="formEmail" action="/system-cgi/formmail.pl" method="post" onsubmit="return testFormular();">
	
<input type="hidden" name="recipient" value="EMAIL">
<input type="hidden" name="subject" value="Kontaktformular">
<input type="hidden" name="required" value="Name,email,number,nachricht">


	
<table id="table_email">
  
  <tr>
    <td class="label"><label for="Name">Name:</label></td>
    <td class="inhalt"><input type="text" name="Name" size="auto" onkeyup="testName(this.value)"></td>
    <td class="zeichen"><img name= "bildEmailName" src="/images/pflicht.gif" alt="" /></td>
  </tr>
  <tr>
    <td class="label"><label for="Telefon">Telefon:</label></td>
    <td class="inhalt"><input type="text" name="Telefon" size="30" onkeyup="testTelefon()"></td>
    <td class="zeichen"></td>
  </tr>
  <tr>
    <td class="label"><label for="Skype">Skype:</label></td>
    <td class="inhalt"><input type="text" name="Skype" size="30" onkeyup="testSkype()"></td>
    <td class="zeichen"></td>
  </tr>
  <tr>
    <td class="label"><label for="email">Email:</label></td>
    <td class="inhalt"><input type="text" name="email" size="30" onkeyup="testEmail()"></td>
    <td class="zeichen"><img src="/images/pflicht.gif" alt="" /></td>
  </tr>
  <tr>
    <td class="label"><label for="nachricht">Ihre Nachricht:</label></td>
    <td class="inhalt"><textarea name="nachricht" rows="8" cols="35" onkeyup="testNachricht()"></textarea></td>
    <td class="zeichen"><img src="/images/pflicht.gif" alt="" /></td>
  </tr>
  <tr>
    <td class="label">Sicherheitscode: 12345</td>
    <td class="inhalt"><input type="text" name="number" size="5" onkeyup="testNumber()"></td>
    <td class="zeichen"><img src="/images/pflicht.gif" alt="" /></td>
  </tr>
  <tr>
    <td class="submit" colspan="3"><input type="SUBMIT" name="Submit" value="Senden"></td>
  </tr>
  
</table>



</form>
Dabei erhält das Bild img name= "bildEmailName". Im aufgerufenen Skript findet sich folgender Code:
Code:
jaBild = new Image();
jaBild.src = "/images/yes.gif";

function testFormular() {
	alert("Das Kontaktformular befindet sich in Arbeit");
	return false;
}
function testName(wert) {
	document.bildEmailName.src=jaBild.src;
	
}
Ich versuche also per document.bildEmailName.src=jaBild.src die Bilddatei zu verändern. So habe ich es in vielen Beispielen gefunden. Leider geschieht in meinem Fall garnichts. Es wird auch kein Skriptfehler angezeigt.
Das yes.gif existiert übrigens.
 
Nach wie vor, der Code muss so funktionieren, es denn du hast einen Fehler drin, wenn du aber sagst es ist keiner da, dann ist etwas anders falsch.

Was passiert wenn du dir anzeigen läßt ob die Referenz auf das Bild stimmt:

PHP:
function testName(wert) {
	alert(document.bildEmailName) 
}
 
Ich habe jetzt als Pfad noch einmal die komplette URL angegeben. Bei alert erscheint der gleiche Hinweis. Allerdings gibt es jetzt eine Veränderung: IM IE erscheint jetzt eine Rotes Kreuz, bei FF verschwindet das vorherige Bild.
Kommen wir der Lösung näher?
 
Du kannst das bild ja direkt aufrufen:
Code:
http://deineDomain.de/images/yes.gif
Genau dort sollte das Bild sein und denk an die Schreibweise, viel Server unterscheiden zwischen Groß- und Kleinschreibung
 
Das Problem ist gelöst!
Es gab folgende Fehler:
  1. Ich hatte mich mit src und scr vertan.
  2. Offenbar war die Bilddatei beschädigt.
  3. Ich benutze zur Entwicklung Aptana (eine bessere Freeware-Lösung habe ich leider nicht gefunden). Wenn ich bisher document.bildEmailName. eingegeben habe, erhielt ich nie src zur Auswahl (CodeComplete). Ganz sicher nicht. Jetzt Ja. Und jetzt läuft es.
Ich bedanke mich für Eure Hilfe!
 
Zurück
Oben