I want to get all inputs from my website and show them in alert message.
However, it seems this script isn't working correctly and only shows the first input element.

What should I do?

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();
有帮助吗?

解决方案

Add them all to s inside the loop, not after the loop

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);
    }
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top