2017-04-21 9 views
0

ユーザが入力したパスの名前と分割パスを動的に表示する必要があります。 そのために、ユーザーが入力したパスを分割し、特定の部分のみを取得しました。例えば、使用がパスに入る場合:パスの分割テキストを表示する(存在しない場合)

/content/mypath/myfolder/about/images/abc.jpg 次に画像/ abc.jpgを表示しています。

ただし、ユーザーが名前を入力してパスを入力しないと、少なくとも名前には&が表示されます。

しかし、それをしようとするとエラーが発生します。

キャッチされない例外TypeError:プロパティを読み取ることができません '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:プロパティを読み取ることができません '0' ヌルの

答えて

1

あなたの問題は、このライン

であります
var newPath = imgPath.match(/images\/.*$/i)[0]; 

あなたは正規表現とのマッチを実行して、最初の結果である[0]の位置を選択しようとしています。だから結果がないときは、存在しないときに[0]の位置を取得しようとする。

だけの行の末尾に[0]というを削除し、これは

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

完璧、おかげで動作します!ちなみに、私は値のチェックをしているコードで、テキストの代わりにsrcを使用して別のミスを犯しました。 – Sunny

+0

あなたがそれを見つけ出して、何かを助けることができるかどうか教えてください。 – xploshioOn

+0

それはうまくいきますが、私が書いた戻り値が正しいとは思わない!正確に動作するように変更する必要があります。それを手伝ってもらえますか? – Sunny

関連する問題