我有一个名为res的字符串变量 在这个变量中有HTML代码 每个Div in变量都有一个id。
var res = "<div id="1">1</div>
<div id="2">12</div>
<div id="3">123</div>
<div id="4">1234</div>";
var content-div-1 = ??;
var content-div-2 = ??;
var content-div-3 = ??;
var content-div-4 = ??;
我想给出div的id并给我Div里面的值。
答案 0 :(得分:1)
当您标记了问题jquery
时,我认为这是在浏览器上下文(或带有DOM的其他上下文)中。如果是这样,最简单的方法是解析HTML并使用生成的断开连接的DOM树:
var res = '<div id="1">1</div>' +
'<div id="2">12</div>' +
'<div id="3">123</div>' +
'<div id="4">1234</div>';
var parsed = $(res);
var contentDiv1 = parsed.filter("[id=1]").text(); // See note below
snippet.log("1: " + contentDiv1);
var contentDiv2 = parsed.filter("[id=2]").text(); // See note below
snippet.log("2: " + contentDiv2);
// ...and so on (or use a loop)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
注意:虽然以数字开头的id
值是有效的HTML,但使用它们很尴尬,因为在CSS id
选择器(#foo
)中,您无法启动ID值使用未转义的数字(例如,#1
是无效的选择器)。这就是为什么我必须使用上面的属性选择器[id=1]
。您可以通过转义来解决它,但到目前为止,最好的选择只是首先不用数字启动ID值。
答案 1 :(得分:0)
问题已得到解答,但是没有jQuery的替代方案
var res = '<div id="1">1</div>'+
'<div id="2">12</div>'+
'<div id="3">123</div>'+
'<div id="4">1234</div>';
function findMe(txt, id){
var matches = txt.match(new RegExp('<div\\s+id="'+id+'">[\\S\\s]*?<\\/div>'), 'gi');
if(matches) return matches[0].replace(/(<\/?[^>]+>)/gi, '');
return '';
}
var content1 = findMe(res,1);
var content2 = findMe(res,2);
var content3 = findMe(res,3);
var content4 = findMe(res,4);