1

以下のHTML文字列があります。

var s= "<html><head><meta alias="Tc"/> <meta TermVersion="1.0" /><meta EffectiveDate="9/15/2013"/></head><body>These are sample T&C content...</body></html>

Jqueryを使用して、「1.0」であるTermVersion値と「2013年9月15日」であるEffectiveDate値を取得したいのですが、オブジェクトを返す以下を試しましたが、値を取得できません。

var a = $(s).find("meta [TermVersion]")
alert(a.val());  //returns undefined.

私が間違っていることを教えてください。あなたの応答に感謝します。ありがとう。

4

4 に答える 4

2

あなたがやる

$(s).find("meta [TermVersion]")

これは、TermVersion 属性を持つ子を持つメタ要素を検索します。ただし、子は必要ありませんが、TermVersion 属性を持つメタ要素が必要です。

meta と TermVersion の間のスペースを省略してみてください。

$(s).find("meta[TermVersion]")
于 2013-06-15T14:39:49.097 に答える
1

parseHTML()を使用して HTML をクリーンアップしてみてください。詳細については、 $.parseHTML() のドキュメントを参照してください。textNodesこれは、文字列を含むdataオプションの配列を返します。

var s = //your weird string    
var s = $.parseHTML(st)[0].data; //now s, has clean semantic HTML.

次に、 のような要素に設定できます<div/>

var $el=$("<div/>").append(s)

次に、その要素から読み取ります。次のスニップ、

$el.find("[TermVersion]").attr("TermVersion")

戻ります1.0

これが jsFiddle のデモです

于 2013-06-15T15:11:01.893 に答える
0

有効な文字列で開始:

var s = '<html><head><meta alias="Tc"/> <meta TermVersion="1.0" /><meta EffectiveDate="9/15/2013"/></head><body>These are sample T&C content...</body></html>';

正規表現を使用する方が簡単です:

var tv = s.match(/\d\.\d/)[0];
var ed = s.match(/\d{1,2}\/\d{1,2}\/\d{4}/)[0];

console.log(tv,ed)
于 2013-06-15T14:38:32.897 に答える
0

どこにもhtml文字列を追加していません。この方法を試して、

var s = '&lt;meta termVersion="1.1"&gt;asd&lt;/meta&gt;';
console.log($('<div />').html($('<div />').html(s).text()).find('meta').text()) ;

var d = '&lt;span&gt;asd&lt;/span&gt;';
console.log($('<div />').html($('<div />').html(d).text()).find('span').text()) ;

デモ http://jsfiddle.net/mUrk2/

メタではなくスパンで動作します。

于 2013-06-15T14:31:22.470 に答える