Foros del Web » Programando para Internet » Javascript »

Qué significan los dos puntos y cuándo usarlos?

Estas en el tema de Qué significan los dos puntos y cuándo usarlos? en el foro de Javascript en Foros del Web. Qué significan los dos puntos y cuándo usarlos? No me refiero a los condicionales de sintaxis alternativa, sino a los casos en que los dos ...
  #1 (permalink)  
Antiguo 21/06/2005, 08:20
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Qué significan los dos puntos y cuándo usarlos?

Qué significan los dos puntos y cuándo usarlos?
No me refiero a los condicionales de sintaxis alternativa, sino a los casos en que los dos puntos se utilizan para asignar valores a la variable, como en el return de este ejemplo, que sirve para determinar la posición absoluta de una capa:

function getElementPosition(elemID) {
var offsetTrail = document.getElementById(elemID);
var offsetLeft = 0;
var offsetTop = 0;
while (offsetTrail) {
offsetLeft += offsetTrail.offsetLeft;
offsetTop += offsetTrail.offsetTop;
offsetTrail = offsetTrail.offsetParent;
}
if (navigator.userAgent.indexOf("Mac") != -1 &&
typeof document.body.leftMargin != "undefined") {
offsetLeft += document.body.leftMargin;
offsetTop += document.body.topMargin;
}
return {left:offsetLeft, top:offsetTop};
}
Gracias por sus respuestas.

Última edición por Panino5001; 21/06/2005 a las 10:49
  #2 (permalink)  
Antiguo 21/06/2005, 10:53
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Mi primera vez

Es la primera vez que pregunto algo en este foro. Alguien podría ayudarme a resolver esta duda???
  #3 (permalink)  
Antiguo 22/06/2005, 01:41
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Puede ser...

una manera de definir las propiedades de un objeto???
  #4 (permalink)  
Antiguo 22/06/2005, 02:27
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Hola Panino5001,

pues... te respondo por que no et quedes con la impresión de que no te hace nadie caso pero la verdad es que no sé la respuesta.

Si me entero serás el primero a quien avise

Un saludo
  #5 (permalink)  
Antiguo 22/06/2005, 03:01
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Gracias, Tunait

Muchas gracias por responderme. Aprovecho para agradecerte también por las muchas cosas que aprendí estudiando tus trabajos (el scroll de noticias, por ejemplo).
Gracias de nuevo.
  #6 (permalink)  
Antiguo 23/06/2005, 01:06
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Encontré lo que buscaba.

Finalmente encontré la respuesta. La dejo por si le interesa a otros:


Otra forma de crear objetos de forma literal es la siguiente:



nombreobjeto={propiedad1:valor;propiedad2:valor;.. ...propiedadN:valor}


Finalmente, sólo añadir que una propiedad puede estar formada por varias subpropiedades de modo que, para referenciarlas deberemos seguir una notación similar a la anterior:


nombreobjeto.nombrepropiedad.nombreSubpropiedad


Ejemplo:


casa1={localidad:"Pamplona",precio:15000000,superf icie:{interior:90,terraza:10}}


En este ejemplo, casa1 es un objeto en el que, la propiedad "superficie", está a su vez formada por dos subpropiedades: interior y terraza.
  #7 (permalink)  
Antiguo 23/06/2005, 03:33
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Buenísimo nunca lo había leído en ningún sitio.

Gracias por la info


...y gracias también por tu comentario sobre mis trabajos me alegra que te sirvieran

Un saludo
  #8 (permalink)  
Antiguo 23/06/2005, 05:52
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola:

La verdad es que yo conocía la existencia de ese tipo de asignaciones, pero nunca había visto aplicarlas.

También se pueden eliminar los puntos, y entrecorchetar cadenas que representan las variables... con el ejemplo de antes:

nombreobjeto.nombrepropiedad.nombreSubpropiedad
sería igual:
nombreobjeto["nombrepropiedad"]["nombreSubpropiedad"]

y si nombreSubpropiedad fuese un método que se quisiese ejecutar solo bastaría ponerle () detrás:

Por último, si uno no sabe los nombres de los atributos, se pueden obtener con un bucle for:
for (elemento in objeto){
//elemento es cada atributo y su valor se obtiene con
// objeto[elemento]

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #9 (permalink)  
Antiguo 23/06/2005, 06:51
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
He intentado hacer algo con lo dicho por caricatos y no sale nada... :(

Código PHP:
<html>
<
head>
<
style>

</
style>

<
script>
function 
ver(esto){

esto=document.getElementById(esto);
for(
a=0;esto['style'][a];a++){
arreglo=esto['style'][a].split("-");
if(
arreglo.length>1){
arreglo[1]=arreglo[1].charAt(0).toUpperCase()+arreglo[1].substring(1);
}
arreglo=arreglo.join("");
alert(arreglo)
esto.innerHTML+=esto['style'][a]+"-"+eval("esto['style']."+arreglo)+"<br>";
}
}
</script>
    <title>Untitled</title>
</head>

<body onload="ver('pepote')">
<div style="font-family: "Courier New", Courier, monospace;
    font-size: 16px;
    font-size-adjust: inherit;
    font-stretch: narrower;
    font-style: italic;
    font-variant: small-caps;
    font-weight: bolder;
    text-align:center;" id="pepote">Camisa<br>
</div>


</body>
</html> 
¿Qué hago mal?
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #10 (permalink)  
Antiguo 23/06/2005, 07:32
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Quizá esto te de una pista: El alert te mostrará todas las propiedades del objeto.

Código:
<html> 
<head> 
<style> 

</style> 

<script> 
function ver(esto){ 
var estos=document.getElementById(esto); 
for (var i in estos) { 
       alert("estos." + i + " = " + estos[i]); 
   } 

}
</script> 
    <title>Untitled</title> 
</head> 

<body onLoad="ver('pepote')"> 
<div style="font-family: "Courier New", Courier, monospace; 
    font-size: 16px; 
    font-size-adjust: inherit; 
    font-stretch: narrower; 
    font-style: italic; 
    font-variant: small-caps; 
    font-weight: bolder; 
    text-align:center;" id="pepote">Camisa<br> 
</div> 

</body> 
</html>
  #11 (permalink)  
Antiguo 23/06/2005, 07:55
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola otra vez:

KarlanKas: en principio te dejo un simple ejemplo que tenía en un textarea (antes de borrarlo)

Código:
<html>
<head>
<title>
XXX	
</title>
<script>
function hola(){
 return "hola";
}

function XXX(){
 this.xx = hola;
}
var x = new XXX();
</script>
</head>
<body onload="alert(window['x']['xx']())">
</body> 
</html>
Ahora puse tu código en mi probador y lo toqué un poquillo:

Código:
<html> 
<head> 
<style> 

</style> 

<script> 
function ver(aquello){ 

esto=document.getElementById(aquello); 
for(estilo in esto['style'])
 esto["innerHTML"] += "esto['style']['" + estilo + "'] = '" + esto['style'][estilo] + "'<br/>";
 
} 
</script> 
    <title>Untitled</title> 
</head> 

<body onload="ver('pepote')"> 
<div style="font-family: Courier New, Courier, monospace; 
    font-size: 16px; 
    font-size-adjust: inherit; 
    font-stretch: narrower; 
    font-style: italic; 
    font-variant: small-caps; 
    font-weight: bolder; 
    text-align:center;" id="pepote">Camisa<br> 
</div> 


</body> 
</html>
Después descubrí que entrecomillabas un tipo de letra... pero tiene que ser alguna cosa más, porque no me funciona... por cierto en vez de repetir "esto" podrías haber usado otra variable como "pepe"...

Saludos

P.D: Escribí el mensaje antes, pero se le fué la olla al ordenador... aunque veo que Panino5001 se enteró del asunto bastante bien... aunque la versión de los corchetes es la que quería mostrar... ["innerHTML"] por ejemplo.
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:48.