仅从 ID 字段中检索数字
Retrieve only the Number from an ID field
假设我有一个这样的列表:
<ul id="items">
<li id="item_1_dish">Item 1</li>
<li id="item_2_dish">Item 2</li>
<li id="item_3_dish">Item 3</li>
</ul>
我只需要从ID中检索号码。 到目前为止,我一直在使用以下方法:
function getNum(element, attrPrefix){
//set prefix, get number
var prefix = attrPrefix;
var num = element.attr("id").substring((prefix.length));
return num;
}
function updateDish(field) {
var num = getNum($(field), "item_");
//Rest of function ...
console.log("Number = " + num);// 1_dish, 2_dish, 3_dish
}
这种回报是如何1_dish、2_dish、3_dish等。
我想用这个:
function getNum() {
var num = /'d+(?='D*$)/.exec($("element").attr('id'));
return num;
}
function updateDish(field) {
var num = getNum($(field), "item_");
//Rest of function ...
console.log("Number = " + num); //null
}
阅读这篇文章后会返回我需要的东西: Jquery:从 ID 获取数字,不幸的是我得到"null"而不是我需要的数字。
我的ID实际上看起来像"_bc_inventorybundle_menu_product_0_dish",我只是为了示例目的而缩短了它们。
感谢所有快速回复。我接受了接受的答案,因为它最接近我已经拥有的答案。
除了解析字符串,您还可以使用 data 属性吗?
<li id="item_1_dish" data-id="1">Item 1</li>
然后,如果element
是jQuery对象,则要访问它:
var id = parseInt($element.data('id'));
或者如果element
是HTMLElement
:
var id = parseInt(element.dataset.id);
您可以解析字符串以在删除前缀后仅获取数字:
var num = parseInt(element.attr("id").substring((prefix.length)));
JSFIDDLE: http://jsfiddle.net/ghorg12110/vacxgomh/1/
您可以通过使用 .split() 方法将 ID 字符串分解为数组来实现这一点。例如:
$(".items > li").each(function() {
number = $(this).attr("id").split("_"); // ex: number = ["item","1","dish"];
return number[1]; // you get number from array since its index is 1
}
如果 id 总是这样格式化,那么只需将它们拆分为_
字符并选择结果数组的第二个元素。喜欢这个:
function getNum(element){
return element.getAttribute("id").split("_")[1];
}
split()
方法根据您指定的字符将字符串转换为数组,我们使用 [1] 指定我们想要该数组的第二个(编号从 0 开始)元素,这是您想要的数字。但是,请注意,因为返回的值是字符串,而不是数字。如果您想要一个数字而不是字符串,请使用 parseInt()
。
虽然我推荐@DrewNoakes实现的想法(使用 data
属性),但这应该有效:
function getNum(id){
var num = id.replace(/.*_('d+)_.*/, '$1');
return num;
}
function updateDish(field) { // field is an HTMLElement, not a jQuery object
var num = getNum(field.id);
//Rest of function ...
console.log("Number = " + num);// 1, 2, 3
}
function getNum(element)
{
var elemId = element.attr("id");
var fIndex = elemId.indexOf('_');
var lIndex = elemId.lastIndexOf('_');
return elemId.substring(fIndex + 1, lIndex);
}
或
function getNum(element)
{
var r = new RegExp(/item_([0-9]+)_dish/);
if(r.test(element.attr("id")) === true)
{
return (r.exec(element.attr("id"))[1]);
}
}
相关文章:
- 使用JSP从服务器检索和显示图像
- 通过Magento的网络服务检索运费
- 更改json/javascript对象var名称或从数字var中检索值
- jQuery - 对使用 .text() 检索的数字使用 .split() 会增加很多空项
- 从localStorage检索数字数据
- 从谷歌 v3 API 响应中检索前两位数字
- Javascript:如何检索*字符串*数字的小数位数
- 仅从 ID 字段中检索数字
- 如何使用正则表达式检索字符串中的两个数字
- 如何正确地将JQuery函数从表单的输入标记中检索到的这些字符串对象转换为数字
- 如何检索输入类型'数字'在html中
- Regex:检索重复字符串后的数字
- 无法检索输入数字值
- Jquery检索数字总是在英文格式的谷歌地图api
- Twitter数字——用AngularJS检索用户账户数据
- 使用.replace()在HTML5数据属性上存储jQuery $.data()检索到的数字时未捕获的TypeError
- 从字符串中检索数字的正则表达式
- 从查询字符串中检索数字的最有效方法
- 使用javascript和jquery四舍五入从html检索到的数字
- 匹配字符串部分并检索非邻近数字正则表达式