当变量为空时,Jquery循环结束?

时间:2016-12-30 15:40:42

标签: jquery

我的代码使用大量较小图片构建的视频游戏制作地图。

现在问题是在最后一个循环中插入一个空值的图像。我真的不明白我在这里做错了什么。

var str = $('#tool').html();
var res = str.match(/.{1,2}/g);

$.map(res, function(value) {
    if (value.length == 0) {
        return;
        }
    $("div#tool").append('<img src="Images/Woods/' + value + '.png" />');
});

2 个答案:

答案 0 :(得分:1)

jQuery Map不是您想要在这里使用的,因为您没有尝试创建新数组。

您应该使用简单的for循环。

var str = $('#tool').html(); //Note that .text() might actually work better here
                             //if you don't want any html tags.
var res = str.match(/.{1,2}/g);

for (var i = 0; i < res.length; i++) {
    var value = res[i];
    if (value.length > 0) {
        $("div#tool").append('<img src="Images/Woods/' + value + '.png" />');
    }
}

我也不确定你的正则表达式(它与空白字符匹配,它会以1或2个字符的块等方式获取匹配),但由于我对你使用它的内容一无所知,我会留给你。

我希望有所帮助。 :)

答案 1 :(得分:0)

regex

/.{1,2}/g

匹配包含任何字符的任何单词(最多2个字符),包括空格。

为了避免空字符串匹配,您需要更改:

if (value.length == 0) {

trim之前添加:

value = value.trim();

一个例子:

$.map(" 123 4 5 5 a a ".match(/.{1,2}/g), function(value) {
  value = value.trim();
  if (value.length > 0) {
     $("div#tool").append('< img src="Images/Woods/' + value + '.png" /><br/>');
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>


<div id="tool"></div>