Хочу вывести несколько строк из массива в один div, выводит только много undefined; подскажите, что делать?

3744
13 февраля 2020, 01:10
function examples(){
 var examples_arr = ["Example1","Example2","Example3"];
 var a, i;
 for(i = 0;i<3;i++){
    examples_arr[i]=a;
    document.getElementById('out').innerHTML += a;
 }
}
Answer 1

Если максимально использовать ваш код, то вот решение:

function examples () {
    var examples_arr = ["Example1", "Example2", "Example3"];
    var a, i;
    for (i = 0; i < 3; i++) {
        a = examples_arr[i];
        document.getElementById('out').innerHTML += a;
    }
}

Но его можно оптимизировать. Например, не обязательно сохранять examples_arr[i] в отдельную переменную, можно сделать:

document.getElementById('out').innerHTML += examples_arr[i];

К тому же вы жестко прописали конец цикла, правильнее будет получать это значение из длины массива:

var l = examples_arr.length;
...
for (i = 0; i < l; i++) {

С точки зрения быстродействия лучше не делать множественную вставку контента к тело страницы, т.к. это заставляет браузер ее перерисовывать. Лучше сначала сохранить контент в отдельную переменную, и после всех операций вставить ее контент. В итоге получаем:

function examples () { 
    var examples_arr = ["Example1", "Example2", "Example3"]; 
    var i; 
    var l = examples_arr.length; 
    var result = ''; 
 
    for (i = 0; i < l; i++) { 
        result += examples_arr[i]; 
    } 
 
    document.getElementById('out').innerHTML += result; 
} 
 
examples();
<div id="out"></div>

Действительно, можно сделать так, как указано в другом ответе:

function examples () {
    var examples_arr = ["Example1", "Example2", "Example3"];
    document.getElementById('out').innerHTML += examples_arr.join();
}

Но [].join() работает немного медленнее обычного суммирования строк и на больших объемах данных будет проигрывать в быстродействии.

Answer 2

А зачем вам переменная а? Вы зачем то массиву присваиваете неинициализированную переменную examples_arr[i]=a;

function examples(){
   var examples_arr = ["Example1","Example2","Example3"];
   for(var i = 0; i<3; i++){
       document.getElementById('out').innerHTML += examples_arr[i];
   }
}

А вообще можно так сделать -

 document.getElementById('out').innerHTML = examples_arr.join('<br>')
Answer 3
examples_arr[i] = a;

Поменяйте местами право и лево:

a = examples_arr[i];
READ ALSO
IIS сервер не отдаёт файл

IIS сервер не отдаёт файл

На IIS Express все работает отличноПереношу на сервер - при попытке скачать файл пишет "Не удалось скачать"

2483
Как создать файл в директории

Как создать файл в директории

Я в программе узнаю директорию в какой расположен исполняемый файл программы, как создать в ней текстовый файл?

2482
Сохранение и загрузка массива Дат

Сохранение и загрузка массива Дат

Как правильно осуществлять сохранение и загрузку массива дат DateTime? Сейчас я осуществляю сохранение массива вот такПравильно ли я делаю...

2431
Контроль одного экземпляра приложения C# в Linux

Контроль одного экземпляра приложения C# в Linux

Пытаюсь адаптировать виндовое C# WinForm приложение для работы в LinuxВ Linux установлено Mono, т

2456