Я хочу получать все данные с моего веб-сайта и отображать их в предупреждающем сообщении.
Однако похоже, что этот сценарий работает некорректно и показывает только первый элемент ввода.

Что я должен делать?

function dotest() {
    var inputs = document.getElementsByTagName("input");
    if (inputs.length > 0) {
        var s = document.URL + "\n";
        s += "-- Inputs list start --\n";
        for (var i = 0; i < inputs.length; i++) {
            var inputdata = inputs[i];
                var imputdatas = null;
                imputdatas += inputdata.name + ",";
                imputdatas += inputdata.id + ",";
                imputdatas += inputdata.type + ",";
                imputdatas += inputdata.value + "\n";
        }
        s += imputdatas;
        s += "-- End -\n\n";
    }
    if (s) {
        alert(s);
    }
}
dotest();
-3
Flare0n 15 Дек 2013 в 04:00
1
Это действительно лучшее название, о котором вы могли подумать?
 – 
Pointy
15 Дек 2013 в 04:04
Прости. Я буду осторожен в следующий раз.
 – 
Flare0n
15 Дек 2013 в 04:33

1 ответ

Лучший ответ

Добавьте их все в s внутри цикла, а не после цикла

function dotest() {
    var inputs = document.getElementsByTagName("input");
    if (inputs.length > 0) {
        var s = document.URL + "\n";
        s += "-- Inputs list start --\n";
        for (var i = 0; i < inputs.length; i++) {
            var inputdata = inputs[i];
            var imputdatas = '';
                imputdatas += inputdata.name + ",";
                imputdatas += inputdata.id + ",";
                imputdatas += inputdata.type + ",";
                imputdatas += inputdata.value + "\n";
            s += imputdatas;
        //  ^^^ needs to be here
        }
        s += "-- End -\n\n";
    }
    if (s) {
        alert(s);
    }
}
4
adeneo 15 Дек 2013 в 04:02
Зачем ему это делать?
 – 
ProllyGeek
15 Дек 2013 в 04:04
2
- Это казалось настолько очевидным, что я больше не объяснял этого, после завершения цикла только последний элемент присутствует в локальной переменной внутри цикла.
 – 
adeneo
15 Дек 2013 в 04:05
Не видел, что это локальная переменная, извините
 – 
ProllyGeek
15 Дек 2013 в 04:16
1
На самом деле в цикле for нет области видимости, поэтому переменная поднимается, но суть все та же, цикл каждый раз устанавливает новое значение.
 – 
adeneo
15 Дек 2013 в 04:18