0

これを次のように変換して、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=

数字は必ずしも同じまたは1桁であるとは限りません。

4

3 に答える 3

4

やろうとしていることを達成することはできますが、代わりにデータ属性を使用することはほぼ確実です

属性にデータをパックする代わりに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のみを使用し、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"]

上記のいずれも、2つの要素の配列を返します。ここで、2番目の要素は問題の数字です。

于 2012-07-27T00:31:22.623 に答える
1
var id = document.getElementById(...).getAttribute("id").split(/=/g);
var type = id[1];
var owner = id[3];
var page = id[5];
于 2012-07-27T00:32:30.283 に答える
1

よりスケーラブルなものを試すことができます。これにより、すべてのキーワードまたは用語とその値を含む優れたオブジェクトが作成され、より多くの用語で簡単に拡張できます。

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 }
于 2012-07-27T00:47:53.250 に答える