ralekay: javascript getelementbyid value falsch

Beitrag lesen

Hi,

also. Die id = sku. Das sind die Artikelnummern. Diese liegen in der Datenbank im Artikelstamm. Dort ist weiterhin der Artikelname, -text, usw. hinterlegt. Das Formular, welches ich dort generiere, ist eine Ansicht einer getätigten Bestellung. Dort werden die einzelnen Artikel in Form eines Formulars (für jeden Artikel ein eigenes Formular mit einem Speichernbutton / so ist die Vorgabe) aufgelistet. Der Values der Inputboxen oder Textareas kommt also aus der Datenbanktabelle mit den bestellten Artikeln. Aus dieser Bestellung wird später zur Weiterverarbeitung ein XML-Code generiert (zum späteren Drucken). Der ganze Druck hat dann mehrere Seiten. Da aber auf manchen Seiten nur 2 Artikel gedruckt werden sollen, hab ich einen Dummyartikel (Artikelnummer 00000) als Platzhalter erstellt.

Angenommen auf der ersten Seite sollen 6 Artikel gedruckt werden und der Rest der Seite bleibt leer (10 passen auf eine Seite / 2 Spaltig), dann hab ich oben die 6 Artikel auf 2 Spalten aufgeteilt und der Rest der Seite wird mit Dummys gefüllt.

Jetzt möchte ich über das Formular die Artikel im Nachhinein ändern. Also einfach mal den ersten Artikel durch einen anderen überschreiben. Fülle ich die passenden Felder nun aus und sende es ab, werden trotzdem die alten Inhalte der Textbox gesendet und nicht die Daten, mit welchen ich in die Textbox eingefügt habe.

z.B.
alter Wert 11111

dieser steht in der txtbox und wird von mir mit

neuer Wert 99999

überschrieben. Gesendet wird aber dennoch der alte Wert, also 11111. Mache ich nun das gleiche bei einem Dummy-Artikel

alter Wert 00000

und überschreibe den Inhalt der txtbox mit

neuer Wert 99999

wird der richtige Wert (99999) auch gesendet. Da für jeden Artikel ja das gleiche Formular generiert wird und dort dann auch die gleiche Funktion aufgerufen wird (javascript), versteh ich nicht, was ich dort falsch mache, dass es nur bei den Dummy-Artikeln funktioniert und beim Rest nicht.

Das ich da "wohl was falsch mache" ist mir klar. Sonst würde ich nicht hier nach Hilfe fragen.

Zum Code und der Struktur. Ich rufe beim Klick auf den Speichern-Button eine Javascriptfunktion auf.

  
function saveItem(itemID, path) {  
params = document.getElementById('sku_'+ itemID).value +'||'+ document.getElementById('id_'+ itemID).value +'||'+ document.getElementById('short_desc_'+ itemID).value +'||'+ document.getElementById('price_'+ itemID).value +'||'+ itemID;  
req.open('post', path, true);  
req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');  
	req.onreadystatechange = handleResponse;	  
	req.send('params='+params);  
}

diese nimmt sich die Values der einzelnen Felder und sendet diese an ein php-skript. Und genau diese Values sind falsch. Beim generieren des Forms, steht bereits der Wert aus der Datenbank in dem Inputfeld. Dieser wird dann von mir überschrieben. Das Skript sendet jedoch den Wert vom Anfang. Folglich überschreibe ich dann die Daten in der DB mit den gleichen Daten. Nur bei den Dummyartikeln funktioniert es.

Hier mal der Code zum generieren des Forms:

	  
while($article = mysql_fetch_array($q)):  
$mod = $i % 2;  
if($mod == 1): $bgcolor = "bgcolor=\"#eee\""; else: $bgcolor = "bgcolor=\"#fff\""; endif;  
echo "<tr>";  
echo "<td ".$bgcolor."><input type=\"text\" size=\"5%\" value=\"".$article['order_item_sku']."\" id=\"sku_".$article['order_item_sku']."\" /></td>";  
echo "<td ".$bgcolor."><input type=\"text\" size=\"10%\" id=\"name_".$article['order_item_sku']."\" value=\"".$article['product_name']."\" /></td>";  
echo "<td ".$bgcolor.">";  
echo "	<textarea 	cols=\"35%\" rows=\"5\" id=\"short_desc_".$article['order_item_sku']."\"";  
echo "				onKeyDown=\"charCounter('short_desc_".$article['order_item_sku']."', 250, 'charCount');\"";  
echo "  			onKeyUp=\"charCounter('short_desc_".$article['order_item_sku']."', 250, 'charCount');\"";  
echo "			  	onChange=\"charCounter('short_desc_".$article['order_item_sku']."', 250, 'charCount');\">";  
echo 		$article['product_s_desc'];  
echo "	</textarea>";  
echo "<br>";  
echo "<div style=\"font-family:Arial, Helvetica, sans-serif; font-size:11px; font-weight:bold; color:#CC0000;\">";  
echo "	<script language=\"JavaScript\" type=\"text/javascript\">";  
echo "		counterOutput('short_desc', 250, 'charCount');";  
echo "	</script>&nbsp;(maximal 250 Zeichen)";  
echo "</div>";  
echo "</td>";  
echo "<td ".$bgcolor.">";  
echo "	<img src=\">";  
echo "</td>";  
echo "<td ".$bgcolor.">";  
?> <input type="hidden" name="<?php echo "id_".$article['order_item_sku']; ?>" id="<?php echo "id_".$article['order_item_sku']; ?>" value="<?php echo $article['order_item_id']; ?>"/> <?php  
echo "<input type=\"text\" size=\"5%\" id=\"price_".$article['order_item_sku']."\" value=\"".$article['product_price']."\" /></td>";  
echo "<td ".$bgcolor."><input type=\"button\" value=\"Speichern\" name=\"".$article['order_item_sku']."\"  onclick=\"saveItem(".$article['order_item_sku'].", ".$path.")\" \></td>";  
echo "</tr>";	  
$i++;  
endwhile;

Wie man sieht, setzt sich der Name jeder Textbox oder jedes Textareas aus einer statischen Kennung "sku_" und der Artikelnummer zusammen und kann so auch vom Javascript angesprochen werden. Also kommen schon mal die Werte aus dem richtigem Input-Feld an. Nur was ankommt stimmt nicht.

Mfg

Ralf