我将如何去剖析一个 id,把它id="type=2owner=6page=1"
变成这样:
var type = "2"; // or what ever is after type= but before owner=
var owner = "6"; // or what ever is after owner= but before page=
var page = "1"; // or what ever is after page=
这些数字并不总是相同或单个数字。
我将如何去剖析一个 id,把它id="type=2owner=6page=1"
变成这样:
var type = "2"; // or what ever is after type= but before owner=
var owner = "6"; // or what ever is after owner= but before page=
var page = "1"; // or what ever is after page=
这些数字并不总是相同或单个数字。
您可以完成您正在尝试做的事情,但您几乎肯定应该使用数据属性。
不要将数据打包到您的id
属性中,而是使用单独的data-
属性:
<div id="my-div" data-type="2" data-owner="6" data-page="1" />
jQuery 为您提供了一种非常简单的语法来访问元素的数据属性:
$('#my-div').data('type'); // "2"
$('#my-div').data('owner'); // "6"
$('#my-div').data('page'); // "1"
或者,对于更改/添加新数据属性:
$('#my-div').data("name", "bob"); // <div .... data-name="bob" />
如果您无法将数据属性添加到您的标记(例如,如果您只使用 HTML 而不是生成它),您可以使用正则表达式将id
属性分开:
var id = "type=2owner=6page=1";
id.match(/type=(\d+)/); // ["type=1", "1"]
id.match(/owner=(\d+)/); // ["owner=6", "6"]
id.match(/page=(\d+)/); // ["page=2", "2"]
以上任何一个都将返回一个双元素数组,其中第二个元素是有问题的数字。
var id = document.getElementById(...).getAttribute("id").split(/=/g);
var type = id[1];
var owner = id[3];
var page = id[5];
你可以尝试一些更具扩展性的东西。这将创建一个包含所有关键字或术语及其值的漂亮对象,并且可以使用更多术语轻松扩展。
var id = 'type=2owner=6page=1'
var terms = ['type', 'owner', 'page']
var results = {}
for (var i = 0, n = terms.length, m, re; i < n; i++) {
m = terms[i]
re = new RegExp(m + '=(\\d+)', 'i')
results[m] = re.exec(id)[1]
}
console.log(results) // { type: 2, owner: 6, page: 1 }