2014-01-22 3 views
0

Так вот что я сделал до сих пор:JavaScript - цикл с массивом

<script> 
text = new Array("t", "te", "tes", "test"); 
for(new i; i < text.length; i++) 
{ 
    document.getElementById('text').innerHTML=text[i]; 
} 
</script> 


<body> 
<span id='text'></span> 
</body> 

Я собираюсь добавить таймер позже, но мой вопрос, почему я получаю «Я ReferenceError» ' не определен"? Определяется как вы можете видеть. Заранее спасибо.

+2

Вы объявляете переменную, используя ключевое слово 'var'. [JavaScript 101] (http://hsablonniere.github.io/markleft/prezas/javascript-101.html). – undefined

+3

Сторона примечания: обычно вы должны использовать [массив литерала] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Values,_variables,_and_literals#Array_literals), а не 'new Array () '. В вашем случае это будет выглядеть так: var text = ['t', 'te', 'tes', 'test']; '. –

+0

Мэтт, какое это имеет значение? Просто любопытно. – prk

ответ

7

Вместо:

for(new i; i < text.length; i++) 

Попробуйте это:

for(var i=0; i < text.length; i++) 

Вы используете new, и в JavaScript, мы должны использовать var для объявления переменных.

Update1

Как @MattBall и @oxfn упомянул в комментариях, ваш скрипт работает до DOM готова. Поэтому вы должны поместить скрипт после тега body (или вы можете указать jquery).

После работает код:

<body> 
    <span id='text'></span> 
    <script> 
    var text = new Array("t", "te", "tes", "test"); 
    for(var i=0; i < text.length; i++) 
    { 
     document.getElementById('text').innerHTML = document.getElementById('text').innerHTML +":"+ text[i]; 
    } 
    </script> 
</body> 
+0

Не дал мне ошибка теперь, но не изменит текст span на то, что находится в массиве? (поскольку у меня нет таймера прямо сейчас, он заканчивается в течение секунды, но разве я не должен видеть «текст», по крайней мере, в промежутке?) – prk

+1

@WoopWoopWoopWoop ваш код работает до того, как DOM готов , –

+0

О, право.У меня было это раньше, и я просто поместил jScript ниже, спасибо, мой плохой. – prk

2

Вы также можете использовать этот метод Aswell,

var text = new Array("t", "te", "tes", "test"); 
    text.forEach(function(textvalue) { 
     console.log(textvalue); 
     document.getElementById('text').innerHTML=textvalue; 
    }); 

Ref:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach

Для отображения значения содержимого массива в <div id="text"></div>

<script> 
     function ArrayPrint(){ 
      var text = ["t", "te", "tes", "test"]; 
      text.forEach(function(textvalue) { 
       console.log(textvalue); 
       document.getElementById('text').innerHTML += textvalue +' | '; 
      }); 
     } 
     window.onload = ArrayPrint; 
</script> 

HTML:

<div id="text"></div> 
0
<!DOCTYPE html> 
<html> 
<body> 
<span id='text'></span> 
</body> 
</html> 


<script type="text/javascript"> 
text = new Array("t", "te", "tes", "test"); 
for(var i=0; i < text.length; i++) 
{ 
    document.getElementById('text').innerHTML=text[i]; 
} 
</script> 
0

Как int в JavaScript примитивный тип и инициализация не требуется новое ключевое слово и JavaScript код работает на DOM нужно, что DOM уже готова к использованию, когда код работает так поместите код сценария внизу непосредственно перед тегом body или вызовите его при загрузке.

Также вы можете использовать свойство длины кеша, которое повышает производительность.

for(var i = 0,max=text.length; i < max; i++) 
    { 
     document.getElementById('text').innerHTML = document.getElementById('text').innerHTML +":"+ text[i]; 
    } 
Смежные вопросы