2010-01-20 8 views
2

Dans le code ci-dessous, progressDiv est le DIV qui commence à se construire. Mais il se construit verticalement ... j'en ai besoin horizontalement ... Que shud je fais?Ajout de DIV à la verticale

var progressDiv = document.getElementById('progressDiv') 
    var div = document.createElement('div'); 

    div.style.display = 'block'; 
    div.style.cssFloat = 'left'; 
    div.style.width = '10px'; 
    div.style.height = '10px'; 
    div.style.backgroundColor = 'red'; 
    div.style.border = '1px solid black'; 

    progressDiv.appendChild(div); 
    if (progressDiv.childNodes.length == 20) 
     while (progressDiv.hasChildNodes()) 
      progressDiv.removeChild(progressDiv.firstChild); 

Répondre

-1

div.style.cssFloat = 'left'; devrait être div.style.float = 'left';

+0

désolé..il en est de même – anish

+0

Assurez-vous que l'élément contenant est assez large pour contenir 20 x 10px. –

+0

l'élément contenant est assez large. HEre ..c'est une combinaison de balises div externes et internes ... normalement elle sera alignée verticalement. Ce dont j'ai besoin, c'est d'aligner horizontalement l'étiquette div extérieure – anish

0

Ah, le bon vieux IE. Si vous faites le div un span, définissez le style à inline-block, et laisser tomber le flotteur, il devrait fonctionner:

var progressDiv = document.getElementById('progressDiv'); 
var span = document.createElement('span'); 

span.style.display = 'inline-block'; 
span.style.width = '10px'; 
span.style.height = '10px'; 
span.style.backgroundColor = 'red'; 
span.style.border = '1px solid black'; 

progressDiv.appendChild(span); 
if (progressDiv.childNodes.length == 20) { 
    while (progressDiv.hasChildNodes()) { 
     progressDiv.removeChild(progressDiv.firstChild); 
    } 
} 

Pourquoi un span plutôt qu'un div? Parce que IE n'aime pas que vous essayiez d'insérer des éléments qui sont bloqués par défaut, même si vous changez leur display. Mais c'est bien de faire des blocs par défaut en ligne. Je ne sais pas si le fait de laisser tomber le flotteur va gâcher quelque chose d'autre que vous essayez de faire, par contre. Mais si vous essayez juste de faire une barre de progression, ça devrait aller si vous gardez le progressDiv assez large.

+0

J'ai essayé cela aussi ... Ne fonctionne pas :( – anish

+0

Ensuite, le problème se trouve ailleurs, ce qui précède fonctionne: http://pastie.org/786193 Essayé Chrome, Firefox, IE7, Safari ... –

0

div.style.display = 'inline'

a marché pour moi.

+0

Hey @uszywieloryba, c'est Il est préférable d'inclure une explication avec vos réponses, SO c'est pour apprendre, pas pour copier-coller. – thomasfedb