我有这个代码,
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);
目的是获取一个 jQ 对象的 id 并返回一个从该 ID 创建的 js 对象。但是, itemFormatter() 内部的日志记录了一个带有数据的实际对象,[object Object]
如果您只记录 item 并且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>
function itemFormatter(match, p1, p2, p3, p4, p5, offset, string){
var id = p3 ? p3 : p5,
type = p1 ? p1 : p4,
dualCheck = p2 ? true : false;
// console.log(lineItem);
return [id, type, dualCheck].join('-');
}
var item = $(this).prop('id').replace(/(clItem[YNA]{1,})(DC)(\d{1,3})|(clItem[YNA]{1,})(\d{1,3})/g, itemFormatter).split('-');
console.log(item);
所以这就是我想出的解决方案,而不是尝试从 replace() 返回一个对象,而是返回一个包含由连字符分隔的重新格式化信息的字符串,然后将 split() 链接到变量声明。这将字符串分解为一个数组 a 允许通过索引访问信息。类似于我试图通过返回一个对象来实现的功能。
$(document).on('click', '.clItemCB', function(){
function itemFormatter(match, p1, p2, p3, p4, p5, offset, string){
var id = p3 ? p3 : p5,
type = p1 ? p1 : p4,
dualCheck = p2 ? true : false;
// console.log(lineItem);
return [id, type, dualCheck].join('-');
}
var item = $(this).prop('id').replace(/(clItem[YNA]{1,})(DC)(\d{1,3})|(clItem[YNA]{1,})(\d{1,3})/g, itemFormatter).split('-');
console.log(item[0]+' I am the ID')
console.log(item[1]+' I am the Type')
console.log(item[2]+' I am for duplicate checking');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="clItemYDC253" class="clItemCB">Click Me!</button>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句