Javascript can';在HTML字符串中筛选HTML标记

Javascript can';在HTML字符串中筛选HTML标记,javascript,jquery,html,Javascript,Jquery,Html,我有一个包含一长串HTML代码的变量 var myHTML = "<html lang='en'><head><title>hey</title></head><body></body></html>" 返回标题标记内的文本。我已经能够过滤并获取除HTML标记之外的其他标记。由于某些原因,这不起作用。filter(“html”).attr(“lang”)我正在尝试获取html标记中的lang属性值。

我有一个包含一长串HTML代码的变量

var myHTML = "<html lang='en'><head><title>hey</title></head><body></body></html>"

返回标题标记内的文本。我已经能够过滤并获取除HTML标记之外的其他标记。由于某些原因,这不起作用。filter(“html”).attr(“lang”)我正在尝试获取html标记中的lang属性值。

jQuery正在过滤掉
标记,并且只包装
标记,这会导致您看到的行为

下面是一个使用本机
DOMParser
对象创建新文档对象并从中提取标记的示例

现场示例:

var myHTML=“嘿”;
var parser=新的DOMParser();
var htmlDoc=parser.parseFromString(myHTML,“text/xml”);
var lang=htmlDoc.getElementsByTagName(“html”)[0].getAttribute(“lang”);
$(“正文”)。追加(郎)

虽然我知道有人会因为这个建议对我大喊大叫,但我还是会使用regex。我相信这是一个有效的用例,因为文本模式是规则的

var myHTML=“嘿”;
var lang=/html lang='(\w+)/.exec(myHTML)[1];

警觉(朗)$(myHTML).attr(“lang”)
?因为它是一个字符串而不是DOM。很好的解释和解决方案!为了进一步的参考,请看我喜欢这个。这可以与jquery混合使用吗?例如,我可以执行这个htmlDoc.find(“div”)@pingykricky刚刚试用过,它看起来像是
$(htmlDoc).find(“html”).attr(“lang”)
可以工作。
$(myHTML).filter("title").text();