2015-01-25 2 views
0

res라는 문자열 변수가 있습니다.
이 변수에는 HTML 코드가 있습니다.
변수의 각 Div에는 ID가 있습니다.변수의 id로 div 텍스트를 가져 오는 방법

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

하지 않고있어 두 가지 선택이있다 : HTML을 구문 분석하거나 브라우저 (jQuery를 통해 선택적으로) 당신을 위해 그것을 구문 분석 할 수 결과로 분리 된 DOM 트리에서 결과를 얻습니다. –

+0

@ T.J.Crowder'gEBI()'가 추가되지 않은 요소를 찾을 수 있습니까? – Teemu

+0

@Teemu : 여기서 getElementById를 사용하지 않겠습니다. (그리고 요소가 DOM에 없으면 getElementById는 그것을 찾지 못할 것입니다.) –

답변

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

1

jquery 질문에 태그를 추가 했으므로 브라우저 컨텍스트 (또는 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이 있지만, 그것은 어색한 그렇다면, 가장 간단한 방법은 HTML을 구문 분석하고 그 결과 연결이 끊긴 DOM 트리를 사용하는 것입니다 CSS id 선택기 (#foo)에서 이스케이프 처리되지 않은 숫자로 ID 값을 시작할 수 없습니다 (예 : #1이 잘못된 선택자 임). 그래서 위의 특성 선택기 [id=1]을 사용해야했습니다. 이스케이프 처리로 해결할 수 있지만 가장 좋은 방법은 처음부터 ID 값을 숫자로 시작하지 않는 것입니다.

+0

모든 요소를 ​​반복하기 위해서는 루프 안에 있어야합니다. 권리? – Superman

+0

@Superman : 루프를 만들거나 문장을 네 번 쓸 수 있습니다. –

+1

우리 언어에 있습니다. :
나는 심하게 걸렸습니다.
고마워요

관련 문제