如何在变量中通过id获取div的文本

时间:2015-01-25 10:56:02

标签: javascript jquery

我有一个名为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里面的值。

2 个答案:

答案 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);

JSFiddle