显示路径的拆分文本(如果存在),否则不显示任何内容

时间:2017-04-21 05:59:24

标签: jquery arrays dynamic split conditional-statements

我需要动态显示用户输入的路径的名称和拆分路径。 为此,我拆分了用户输入的路径并仅抓取其中的某些部分。对于例如如果使用输入路径为:

/content/mypath/myfolder/about/images/abc.jpg 然后我正在显示images / abc.jpg。

但是,假设用户只输入名称而不输入路径,至少应该附加名称&在那种情况下显示。

但是当我尝试这样做时会引发错误。

未捕获的TypeError:无法读取null

的属性“0”

$(document).ready(function(){
  $('#getData').click(function(){
    var name = $('#name').val();
    var imgPath = $('#imgPath').val();
    var newPath = imgPath.match(/images\/.*$/i)[0];
    $('.container').append(
      $('<p>').text(name),
      $('<p>').text(newPath, function(){
        return /^\/images/.test(newPath) ? src :$('#imgPath').val();
      })
    );
    //console.log(slicedPath);
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script>
Name: <input type="text" id="name">
Image path: <input type="text" id="imgPath">
<div class="container">

</div>
<button id="getData">Click</button>

未捕获的TypeError:无法读取null

的属性“0”

1 个答案:

答案 0 :(得分:1)

你的问题就在这一行

var newPath = imgPath.match(/images\/.*$/i)[0];

您正在尝试使用正则表达式运行匹配,然后选择第一个结果,即[0]位置。因此,当没有结果时,如果没有结果,则尝试获得[0]位置。

只删除该行末尾的[0],这将起作用

var newPath = imgPath.match(/images\/.*$/i);