Tema: Dom
Ver Mensaje Individual
  #9 (permalink)  
Antiguo 05/11/2004, 02:31
kepawe
 
Fecha de Ingreso: agosto-2004
Mensajes: 157
Antigüedad: 20 años, 3 meses
Puntos: 5
Hola a todos

Cita:
Iniciado por trovanet
cualquier validación sobre los objetos que alguna vez existieron da error
Trovanet, he tenido el mismo problema en IE, no me deja acceder a los valores y propiedades de los elementos creados, en Mozilla sí.
He conseguido acceder utilizando la sintesis de array del elemento form.

Código PHP:

<html>
<
head>
<
title>Crear un form</title>

</
head>
<
body>
<
div id="selectColour"></div>

<
a href="javascript:void(0)" onclick="create_form()">Crear form</a>
<
script language=JavaScript type=text/javascript>
<!--
var 
colour_op=['Selecciona un color','red','green','yellow'];
// Guardamos aqúi los elementos de formulario creado
var obj_form = new Array()
function 
create_form(){
  
// comprobar que form1 no este creado
  
for(var ct1 ct1 document.forms.lengthct1++){

    if(
document.forms[ct1].name == "form1"){ return false}
  }
  
// Donde vamos a colocar el formulario
  
var div_select document.getElementById("selectColour")
  
// Creamos el objeto form
  
var form_node document.createElement("form")
   
// añadimos el atributo
  
form_node.setAttribute("name","form1")
  
form_node.setAttribute("action","form.php")
  
// añadimos el nodo creado como nodo hijo de div_select
  
div_select.appendChild(form_node)
  
  var 
input_node document.createElement("input")
   
input_node.setAttribute("type","button")
   
input_node.setAttribute("name","boton")
   
input_node.setAttribute("value","botón")
   
form_node.appendChild(input_node)
   
   var 
select_node document.createElement("select")

  
select_node.setAttribute("name","select1")

  for(var 
ct 0ct colour_op.lengthct++){

      var 
option_node document.createElement("option")
      
select_node.appendChild(option_node)
      
option_node.setAttribute("value",colour_op[ct])
      var 
text_node document.createTextNode(colour_op[ct])
      
option_node.appendChild(text_node)


  }
  
form_node.appendChild(select_node)
  
  
  
  
/* IE solo me ha permitido  acceder a las propiedades
   y valores del select creado  mediante  la sintesis de
   arrays, para poder trabajar más facilmente con los elementos de
   form  los guardo en un array.
  */
  
for(var ct1 ct1 document.forms.lengthct1++){
    if(
document.forms[ct1].name == "form1"){
      
obj_form[document.forms[ct1].name] = document.forms[ct1]
        for(var 
ct2 0ct2 document.forms[ct1].elements.lengthct2++){
        
obj_form[document.forms[ct1].elements[ct2].name] = document.forms[ct1].elements[ct2]
        
        
      }
    }
  }
// utilizamos el array creado para trabajar con los elementos form
obj_form["select1"].onchange show_selectedIndex
 
}

function 
show_selectedIndex(){
  
colourButton obj_form["select1"].options[obj_form["select1"].options.selectedIndex]
  if(
colourButton.index != 0){
    
obj_form["boton"].style.backgroundColor colourButton.value
    
  
}
}


//-->
</script>


</body>
</html> 
En cuanto a la perdida de datos, corregirme si me equivoco, solo veo tres posibles soluciones, utilizar cookies, pero claro el usuario lo tiene que tener habilitados. Si trabajas con frames, guardando los datos en unos de los frames, pero si el usario recarga la página los pierdes, o utilizar la propiedad search del objeto location he visto algún ejemplo en el foro.

Espero que te sea util.
Muchas gracias a Caricatos por las direccciones, me están siendo de gran ayuda.


Un saludo a todos