2010-03-01 4 views
0

정규 표현식을 사용하여 div를 찾으려고합니다. (클래스 이름이 다소 동적이기 때문에). 자바에서 정규식을 사용하여 div를 찾고 변경하십시오.

일단 내가 다음 필드 셋의 내부 사업부를 배치 할 필요가 발견, 그래서 내가 자바 스크립트에서이 작업을 수행 할 수있는 방법
<fieldset class="..."> 
    <div class="the one I found">...</div> 
</fieldset> 

의 최종 출력을 가진 끝?

많은 덕분에, 스티브

+1

DIV가 문서의 DOM에 있습니까? 그렇다면 DOM 메소드를 대신 사용하십시오. – Gumbo

+0

예, div는 DOM에 포함되어 있습니다. DOM 메소드는 어떻게 사용할 수 있습니까? –

+0

'document.getElementsByClassName' (https://developer.mozilla.org/en/DOM/document.getElementsByClassName). – kennytm

답변

3

이 정규 표현식에와 경솔한과는 어려울 것입니다. 예를 들어 div에 다른 div가 포함 된 경우 어떻게됩니까? HTML이 정규 언어가 아니기 때문에 올바른 닫는 div 태그를 찾는 것이 정규 표현식이 할 수있는 것이 아닙니다.

$("div.someClass").wrap("<fieldset class='...'></fieldset>"); 

그것은 물론 같은 것을 사용하여 바닐라 자바 ​​스크립트 DOM으로 수행 할 수 있습니다 : 물론 필요의

var divs = document.getElementsByTagName("div"); 
for (var i=0; i<divs.length; i++) { 
    if (divs[i].className == "...") { 
    var fs = document.createElement("fieldset"); 
    fs.className = "..."; 
    var parent = divs[i].parentNode; 
    parent.insertBefore(fs, divs[i]); 
    fs.appendChild(divs[i]); 
    } 
} 

당신을 한편

,이 jQuery와 사소한 하나 라이너 fieldset에 넣을 클래스를 채우고 div에 대한 테스트를 변경하여 조작해야하는지 아닌지 알아 내야합니다.

+0

div에는 다른 div가 가장 명확하게 포함됩니다. 나는 그것을 복사해야하고 모든 하위 요소를 필드 세트에 복사해야한다. 정규식을 사용하여 "someClass"라는 이름을 어떻게 찾을 수 있습니까? –

0

jquery 사용이 시도 할 수 있습니다 :

var classes = $(document.body).html().match(/class="pattern"/g); // find classname matchin pattern 
for(i in classes) { 
    var nodes = $('.'+classes[i].substr (7, str.length - 8)); 
    nodes.wrap("<fieldset class='...' />"); 
} 
0
window.onload = function() { 

     var params = { 
      has: "something" 
     }; 

     // var fieldset = doc... get field the same as with div. 

     var divs = document.getElementsByTagName("div"); 
     for (var i = 0; i < divs.length; i++) { 
      if (params.has.indexOf(divs[i].className) > 0) { 
      // fieldset.innerHTML = divs[i].innerHTML; 
       divs[i].innerHTML = "<fieldset class=''> + divs[i].innerHTML + "</fieldset>"; 
      } 
     } 

    } 

정규 표현식을 사용할 필요가 없습니다, 같이 IndexOf 방법은 충분하다. jquery를 사용할 필요가 없습니다. 자바 스크립트 좋은 문자열과 배열 함수 - 그들을 사용하지만, DOM 엉망이다.

관련 문제