0
私はこのコードを持っている
、JSオブジェクトを返す関数として.replace()の2番目のパラメータを取得していますか?
function itemFormatter(match, p1, p2, p3, p4, p5, offset, string){
var lineItem = {
id: p3 ? p3 : p5,
type: p1 ? p1 : p4,
dualCheck: p2 ? true : false
};
console.log(lineItem);
return lineItem;
}
var item = $(this).prop('id').replace(/(clItem[YNA]{1,})(DC)(\d{1,3})|(clItem[YNA]{1,})(\d{1,3})/g, itemFormatter);
console.log(item.id);
目的は、IDから作成したjsオブジェクトをjQのオブジェクトのIDを取得して返すことです。しかし、itemFormatter()内のログは実際のオブジェクトをデータでログに記録し、項目変数の下にあるログは[object Object]
を返し、undefined
をログするとitem.id
のようにログに記録します。
lineItemが正しく返されるように、または私が期待しているデータをどのように返すのですか?
$(document).on('click', '.clItemCB', function(){
function itemFormatter(match, p1, p2, p3, p4, p5, offset, string){
var lineItem = {
id: p3 ? p3 : p5,
type: p1 ? p1 : p4,
dualCheck: p2 ? true : false
};
console.log(lineItem);
return lineItem;
}
var item = $(this).prop('id').replace(/(clItem[YNA]{1,})(DC)(\d{1,3})|(clItem[YNA]{1,})(\d{1,3})/g, itemFormatter);
console.log(item);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="clItemYDC253" class="clItemCB">Click Me!</button>
何をやっていることは本当に意味がありません。 '.replace()'の振る舞いは返された値を使って一致したコンテンツを置き換えるため、 '.replace()'に渡される関数のコールバックからの戻り値はオブジェクトではなく**文字列**でなければなりません正規表現にマッチする)。 – Pointy
あなたができること(私が目標を理解しているとわからない場合)は、コールバックが*コールバックの外に宣言された変数の値を設定することです。 – Pointy
あなたは文字列をアイテムに格納するので、 '$(this)'への魔法の言及ではなく、文字列を置き換えるときには要素のプロパティを更新しません。 – epascarello