Foros del Web » Programando para Internet » Javascript »

Problema detectando objetos

Estas en el tema de Problema detectando objetos en el foro de Javascript en Foros del Web. Buenas tengo este codigo: Código: function Calc() { var wImage = 130; var hImage = 100; var tPage = document.body.clientWidth; var tLayer = Math.floor(tPage/wImage); var ...
  #1 (permalink)  
Antiguo 25/02/2009, 06:11
Avatar de mdk
mdk
 
Fecha de Ingreso: noviembre-2002
Mensajes: 531
Antigüedad: 21 años, 5 meses
Puntos: 11
Problema detectando objetos

Buenas tengo este codigo:

Código:
function Calc() {
	var wImage = 130;
	var hImage = 100;
	var tPage  = document.body.clientWidth;
	var tLayer = Math.floor(tPage/wImage);
	var mLayer = Math.floor(tPage/tLayer); 
	var pInici = Math.floor((mLayer-wImage)/2); 
	var cLayer = Math.ceil(20/tLayer); 
	var nLayer = 1;
	var LayTop = 10;
	for(CntLy = 1; CntLy <= cLayer ; CntLy++) {
		var LayLeft = pInici;
		for(CntCn = 1; CntCn <= tLayer; CntCn++) {
			ObjDiv = document.getElementById('Layer' + nLayer);
			ObjDiv.style.position	= "absolute";
			ObjDiv.style.Left 		= LayLeft;
			ObjDiv.style.Top 		= LayTop;
			var LayLeft = LayLeft + mLayer;
			nLayer++;
		}
		var LayTop = LayTop + hImage;
	}
}
Cuando lo ruedo, me da este error "Error: ObjDiv has no properties", a que se puede deber el error, porque yo veo el codigo bien :S

El index.php contiene esto:

Código:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Fotos</title>
</head>
<script src="script.php" type="text/javascript"></script>
<body onLoad="Calc()" onResize="Calc()">

<?php
for($TmpSb = 1; $TmpSb <= 20; $TmpSb++) { echo '<div id="Layer'.$TmpSb.'" style="position:absolute; background-color:#000099; Width:120px; Height:90px;"></div>'."\n"; }
?>
__________________
SoY Lo Ke VeS iNKLuSo KuAnDo No Me VeS ;)

Última edición por mdk; 25/02/2009 a las 06:43 Razón: Faltaba añadir index.php
  #2 (permalink)  
Antiguo 25/02/2009, 11:47
Avatar de mdk
mdk
 
Fecha de Ingreso: noviembre-2002
Mensajes: 531
Antigüedad: 21 años, 5 meses
Puntos: 11
Respuesta: Problema detectando objetos

Vale, ya detecte el problema, era porque en esta linea:

Código:
for(CntCn = 1; CntCn <= tLayer; CntCn++) {
Hace que cuente hasta 9, por lo que el contador de la variable nLayer supera 20, que es el número de capas existentes. Por eso me daba el error

Ahora me surge otro poblema y es que las capas, no se colocan en las cordenadas que le asigno, porque?
__________________
SoY Lo Ke VeS iNKLuSo KuAnDo No Me VeS ;)
  #3 (permalink)  
Antiguo 25/02/2009, 12:33
Avatar de mdk
mdk
 
Fecha de Ingreso: noviembre-2002
Mensajes: 531
Antigüedad: 21 años, 5 meses
Puntos: 11
Respuesta: Problema detectando objetos

Ah, se me olvidaba, el código corregido quedo así.

Código:
function Calc() {
	var wImage = 130;
	var hImage = 100;
	var tPage  = document.body.clientWidth; 
	var tLayer = Math.floor(tPage/wImage); 
	var mLayer = Math.floor(tPage/tLayer); 
	var pInici = Math.floor((mLayer-wImage)/2); 
	var cLayer = Math.ceil(20/tLayer); 
	var nLayer = 1;
	var LayTop = 10;
		for(CntLy = 1; CntLy <= cLayer ; CntLy++) {
		var LayLeft = pInici;
		var CntCn = 1;
		while((CntCn <= tLayer) && (nLayer <= 20)) {
			CntCn++
			SetMove('Layer'+nLayer, LayLeft, LayTop);
			var LayLeft = LayLeft + mLayer;
			nLayer++;
		}
		var LayTop = LayTop + hImage;
	}
}
function SetMove(Layer, Left, Top) {
			var ObjDiv = document.getElementById(Layer);
			ObjDiv.style.position	= "absolute";
			ObjDiv.style.Left 	= Left+'px';
			ObjDiv.style.Top 	= Top+'px';
}
Lo curioso es que si en el index.php quito esta línea.

DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

o cualquiera que sea de DOCTYPE, entonces funciona perfectamente...

Pero como solucionar el problema sin quitar la línea?
__________________
SoY Lo Ke VeS iNKLuSo KuAnDo No Me VeS ;)
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 03:56.