我需要动态显示用户输入的路径的名称和拆分路径。 为此,我拆分了用户输入的路径并仅抓取其中的某些部分。对于例如如果使用输入路径为:
/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”答案 0 :(得分:1)
你的问题就在这一行
var newPath = imgPath.match(/images\/.*$/i)[0];
您正在尝试使用正则表达式运行匹配,然后选择第一个结果,即[0]位置。因此,当没有结果时,如果没有结果,则尝试获得[0]位置。
只删除该行末尾的[0],这将起作用
var newPath = imgPath.match(/images\/.*$/i);