0

テキストエリアの行をjs配列に保存したい。このコードは機能しますが、テキストエリアに空の行がある場合、空の行の後に配列要素の値が未定義に設定されます!
デモ: http://jsfiddle.net/pYTjR/3/

<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script>
function check(){
var lines = $('#links').val().split(/\n/);
var texts = []
for (var i=0; i < lines.length; i++) {

  if (/\S/.test(lines[i])) {
    texts.push($.trim(lines[i]));
    }
var links = texts;
var str = links[i];
alert(i+"-  "+str);
}
}
</script>
</head>
<body>

<textarea id="links" name="upload" cols=80 rows=10>
www.example.com/book111.pdf
www.example.com/book222.pdf
www.example.com/book333.pdf

www.example.com/book444.pdf
www.example.com/book555.pdf
</textarea>

<input type="submit" id="getsize" name="getsize" value="textarea to array" onclick= "check()" />

</body>
</html>

デモ: http://jsfiddle.net/pYTjR/3/

4

1 に答える 1

2

正しくアラートしないことを除いて、期待どおりに機能していると思います。これを試して:

http://jsfiddle.net/pYTjR/7/

function check(){
    var lines = $('#links').val().split(/\n/);
    var texts = [];
    for (var i=0; i < lines.length; i++) {
        if (/\S/.test(lines[i])) {
            texts.push($.trim(lines[i]));
        }
    }
    for (var i=0; i < texts.length; i++) {
        alert(i+"-  "+texts[i]);
    }
}
于 2013-10-22T18:24:52.993 に答える