Newsgroup: it.comp.lang.javascript
Titolo: post da form strutturato in <table> con parentNode

Salve a tutti, non ho molta esperienza con javascript ( da leggersi ci
capisco molto poco ) ho un problemino con il submit di un form, i cui
campi input sono inseriti dentro una tabella.
Non capisco come mai, se i campi sono esterni riesco a far leggere i
valori alla this.parentNode, altrimenti se insiti un qualche altro TAG
l'unica cosa che vedo è un array vuoto di elementi.
grazie :)
Matteo
il codice si presenta così
<tr>
	<!-- output ordine -->
	<td colspan="3" align="center">
	<form
action="javascript:getFinestraAnteprima(document.getElementById('anteprimaAnteprima'));"
name="anteprimaAnteprima" id="anteprimaAnteprima" method="post">
	<!-- esecuzione ordine anteprima -->
			<table border="1">
			<tbody><tr><td>COLORE</td>
<td>AZZU</td>
<td>GIAL</td>
<td>NATU</td>
<td>BLU1</td>
<td>ROYA</td>
<td>BIAN</td>
<td>SENA</td>
</tr><tr><td>50X80</td>
<td><input class="CampoPink" name="a200000303032-AZ" value=""
maxlength="3" type="text"></td>
<td><input class="CampoPink" name="a200000303032-GI" value=""
maxlength="3" type="text"></td>
<td><input class="CampoPink" name="a200000303032-NA" value=""
maxlength="3" type="text"></td>
<td><input class="CampoPink" name="a200000303032-B1" value=""
maxlength="3" type="text"></td>
<td><input class="CampoPink" name="a200000303032-RY" value=""
maxlength="3" type="text"></td>
<td><input class="CampoPink" name="a200000303032-BI" value=""
maxlength="3" type="text"></td>
<td><input class="CampoPink" name="a200000303032-SE" value=""
maxlength="3" type="text"></td>
</tr>
			<tr>
			<td><input name="button" value="Submit"
onclick="javascript:getFinestraAnteprima(this.parentNode);"
type="button"></td>
			</tr>
			</tbody></table>
	</form>
	</td>
	</tr>

 l'unica cosa che vedo è un array vuoto di elementi.
cosa intendi?
this.parentNode ti restituisce un riferimento all'oggetto contenitore ...
quindi se è un input dentro un td ti restituirà un riferimento alla td:
 
http://developer.mozilla.org/en/docs/DOM:element.parentNode
per il resto, senza vedere cosa fa la getFinestraAnteprima è difficile
aiutarti...
se vuoi ottenere un riferimento alla form contenitrice del tag input puoi
usare tuoinput.form (es. onclick="this.form")
-- 
"E' l' ignoranza che crea l'intolleranza
 di gente cieca e senza coscienza"
									  S.S.S.

quei c'è la funziona richiamata:
<script type="text/javascript" language="javascript">
   var http_request = false;
   function makeRequestAnteprima(url, parameters) {
      http_request = false;
      if (window.XMLHttpRequest) { // Mozilla, Safari,...
         http_request = new XMLHttpRequest();
         if (http_request.overrideMimeType) {
         	// set type accordingly to anticipated content type
            http_request.overrideMimeType('text/xml');
            http_request.overrideMimeType('text/html');
         }
      } else if (window.ActiveXObject) { // IE
         try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
         } catch (e) {
            try {
               http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
         }
      }
      if (!http_request) {
         alert('Cannot create XMLHTTP instance');
         return false;
      }
      http_request.onreadystatechange = alertContentsAnteprima;
      http_request.open('GET', url + parameters, true);
      http_request.send(null);
   }
   function alertContentsAnteprima() {
      if (http_request.readyState == 4) {
         if (http_request.status == 200) {
            alert(http_request.responseText);
            result = http_request.responseText;
            document.getElementById('myspan').innerHTML =
result;
         } else {
            alert('There was a problem with the request.');
         }
      }
   }
   function getFinestraAnteprima(obj) {
      var getstr = "?";
      for (i=0; i<obj.childNodes.length; i++) {
         if (obj.childNodes[i].tagName == "INPUT") {
            if (obj.childNodes[i].type == "text") {
               getstr += obj.childNodes[i].name + "=" +
obj.childNodes[i].value + "&";
            }
            if (obj.childNodes[i].type == "checkbox") {
               if (obj.childNodes[i].checked) {
                  getstr += obj.childNodes[i].name + "=" +
obj.childNodes[i].value + "&";
               } else {
                  getstr += obj.childNodes[i].name + "=&";
               }
            }
            if (obj.childNodes[i].type == "radio") {
               if (obj.childNodes[i].checked) {
                  getstr += obj.childNodes[i].name + "=" +
obj.childNodes[i].value + "&";
               }
            }
         }
         if (obj.childNodes[i].tagName == "SELECT") {
            var sel = obj.childNodes[i];
            getstr += 
sel.name
 + "=" +
sel.options[sel.selectedIndex].value + "&";
         }
      }
      makeRequestAnteprima('azioni/anteprima.php', getstr);
   }
</script>

          if (obj.childNodes[i].tagName == "INPUT") {
quindi sembrerebbe ciclare gli input della form, e quindi anziché
this.parentNode *potrebbe* bastare this.form.
A questo punto però, più che ciclare i childNodes, conviene ciclare la
collection elements, del tipo
 for(var i=0,objs=obj.elements;i<objs.length;i++) {
  if(objs[i].tagName=="INPUT" ... etc etc
-- 
"Non sai che ci vuol scienza
 ci vuol costanza
 ad invecchiare senza maturità"
									    F.G.


wrote:

sei stato gentilissimo grazie :) funziona :D