Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/02/2009, 11:57
basa
 
Fecha de Ingreso: abril-2008
Mensajes: 50
Antigüedad: 16 años, 10 meses
Puntos: 0
createElement, appenchild y removechild

Hola a todos,
os pongo un código resumido de algo en lo que estoy ahora. Es un timeline que recoje unos valores dinámicamente (el ancho y el score) y crea unos divs entorno a esos valores. Cada segmento tiene a su vez asociado un Keyframe que se presenta en la parte de arriba. Todo esto lo podeís ver si salvais el código en el navegador (como he dicho, de forma un poco esquemática de lo que luego sería). Hasta aquí todo correcto.
El problema viene cuando intento crear un nuevo div en el contenedor del keyframe para el evento mouseover y click. Mi idea fué la que veis en el código, esto es crear un elemento div y luego borrarlo, pero no me funciona. Y no entiendo pq... si me podeís echar una mano os lo agradecería

codigo completo


Código PHP:
<html>
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<
title>Documento sin tÃ*tulo</title>
<
script language="javascript" type="text/javascript">
var 
segWidthscoreposXposYsegmentNumber;
var 
seeClick;
var 
segments = new Array();
/******* FUNCION 1: CONSTRUCTOR************/
function segment(){
   
this.score parseInt(Math.random()*100);
   
this.segWidth parseInt(Math.random()*200);
}
/**************************************/
/********* 2: EVENTOS************/
function keyVisibleOver(elem,ivalue){
   var 
keyframe document.getElementById('keyFrame'+i);
   if(
elem != seeClick){
      
keyframe.className 'keyframesBig';
      var 
scoreAd document.createElement('div'); 
      var 
scoreText document.createTextNode("Score: "+value);
      
keyframe.appendChild(scoreAd);
      
scoreAd.id "score_class";
      
scoreAd.appendChild(scoreText);
      }
}
/**************************************/
function keyHide(elemi){
    var 
keyframe document.getElementById('keyFrame'+i);
    var 
scoreAd document.getElementById('score_class');
    if(
elem != seeClick){
        
keyframe.className 'keyframes';
        
keyframe.removeChild(scoreAd);
    }
}
/**************************************/
function keyVisibleClick(elemivalue){
    var 
keyframe document.getElementById('keyFrame'+i);
    
limpiar(i);
    var 
scoreAd document.createElement('div');
    var 
scoreText document.createTextNode("Score: "+value);
    
keyframe.className 'keyframesBig';
    
keyframe.appendChild(scoreAd);
    
scoreAd.id "score_class";
    
scoreAd.appendChild(scoreText);
    
seeClick elem;
}
/**************************************/
function limpiar(i){
    var 
arrKeyframes document.getElementById('keyFrames_cont').getElementsByTagName('div');
    var 
scoreAd document.getElementById('score_class');
    var 
keyframe document.getElementById('keyFrame'+i);
        for(
j=0j<arrKeyframes.lengthj++){
                   
keyframe.removeChild(scoreAd);
                   
arrKeyframes[j].className 'keyframes';
         }
}
/******* FUNCION 6: CREAMOS LOS SEGMENTOS************/
function makeSegments(){
      var 
i;
      
segmentNumber 4;//por ejemplo
      
for(i=0i<segmentNumberi++){
              var 
timeline document.getElementById('timeline');
              
segments[i]= new segment();
              var 
segmentDiv "<div id='seg"+i+"' onclick='keyVisibleClick(this,"+i+");' onmouseover='keyVisibleOver(this,"+i+","+segments[i].score+");' onmouseout='keyHide(this,"+i+");' style='width:"+segments[i].segWidth+"px'";
              if(
segments[i].score>=&& segments[i].score<=50segmentDiv += "class='segClass score_10'><\/div>";
              else if(
segments[i].score>50 && segments[i].score<=100segmentDiv += "class='segClass score_20'><\/div>"
              
timeline.innerHTML += segmentDiv;
/*******************/
            
posX = (document.getElementById('seg'+i).offsetLeft)+(parseInt(segments[i].segWidth/2))-25;
              
posY 2;
              
document.getElementById('keyFrames_cont').innerHTML += "<div id='keyFrame"+i+"' class='keyframes'"+
              
"style='left:"+posX+"px; top:"+posY+"px'><img src='./images/keyFrame_sample.jpg' id='keyframe_img"+i+"'/><\/div>";
          }
}
</script>
<style type="text/css">
.segClass{
border-right:1px solid #fff; 
height:15px; 
float:left;
cursor:pointer;
}
.score_10{
background:yellow;
}
.score_20{
background:green;
}

.keyframes{
background-color:red;
width:21px;
height:22px;
z-index:0;
}
.keyframesBig{
background-color:blue;
width:21px;
height:22px;
z-index:100;
}
#keyFrames_cont div{
padding:7px;
position:absolute;
}
#keyFrames_cont div img{
float:left;
}
</style>
</head>

<body onload="makeSegments();">
<div id="keyFrames_cont"></div>
<div id="timeline" style="height:15px; margin-top:60px"></div>
</body>
</html> 
Un saludo

Última edición por basa; 08/02/2009 a las 12:53