2009-07-29 6 views
0

Я делаю небольшой эксперимент, пытаясь случайным образом размещать изображения внутри div, используя цикл javascript. У меня были проблемы с этим.Styling Divs с Javascript Vars

Вот что я (упрощенно):

for(var i = 0; i < 10; i++) 
{ 
var top = random(-20, 20); 
var left = random(-20, 20); 

document.write(
    <div class="one" style="\"left:" + left + ";\""> 
    <img src="hein.png"/> 
    </div> 
); 
} 

Цели в том, чтобы произвести некоторые верхние и левые значения, и каждый itteration отобразить новое изображение с этими сгенерированными значениями. Я знаю, что это синтаксическая ошибка со стилем = "". Но ничего, что я пробовал, не работал

Как я могу заставить это работать.

ответ

0

Вы забыли кавычки в document.write и вы спасаясь неправильные символы внутри него

document.write(
    "<div class=\"one\" style=\"left:" + left + ";\"> 
    <img src=\"hein.png\"/> 
    </div>" 
); 
1

Вы Мид, чтобы обернуть весь document.write выход в кавычки, например:

document.write('<div class="one" style="left:"' + left + ';"><img src="hein.png"/></div>'); 
1

You следует сначала рассмотреть возможность использования библиотеки JavaScript, такой как jQuery. Это упростит вашу работу.

Допустим, у вас есть эта разметка

<div id="image-container"> 

</div> 

Включать JQuery в вас разметить

<script type="text/javascript" src="http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js"></script> 

Из JavaScript вы могли бы сделать это, после того, как вы включили JQuery в разметке

for(var i = 0; i < 10; i++) { 
    var top = random(-20, 20); 
    var left = random(-20, 20); 

    $('#image-container').append('<img src="hein.png" style="position: absolute; top: '+top+'; left : '+left +';" />'); 
} 
+0

Это, однако, работает совершенно по-другому, поскольку вы должны сделать это * после того, как страница загрузилась, а не * в то время как * страница загружается, как и с document.write. – Guffa

+0

Это не очень хорошая практика, чтобы сделать document.write –

0

Вы забыли процитировать строку в вызове document.write. Также вы забыли блок измерения.

for(var i = 0; i < 10; i++) { 
    var top = random(-20, 20); 
    var left = random(-20, 20); 

    document.write(
     '<div class="one" style="left:' + left + 'px;top:' + top + 'px">' + 
     '<img src="hein.png"/>' + 
     '</div>' 
    ); 
} 
+0

Ничего себе, что было быстро и элегантно, никаких героев-побегов! Отлично работает, теперь я немного знаю о .write – febs

+0

Использование document.write на самом деле не является хорошей практикой. –

+0

Опубликовано альтернатива в PHP. Спасибо за помощь. – febs

0

Использование PHP Вместо:

<?php 
// Middle coords of my div 
    $top = 200; 
    $left = 350; 

    for($i = 0; $i < 20; $i += 1) 
    { 
     $tran = rand(-130,170); 
     $lran = rand(-300,270); 
     // Fix line breaks 
     $top = $top - 49; 
     echo '<div style="position:relative; 
        display: block; 
        height: 49px; 
        width:49px; 
        left:' . ($left + $lran) . 'px; 
        top:' . ($top + $tran) . 'px; 
       ">' . '<img src="img.png"/>' . '</div>'; 
    } 

?> 

Awesome! Спасибо за помощь в синтаксисе строки!

Смежные вопросы