2011-03-08 1 views
0

일부 스팬이있다 ...문자열 문장과 요소에 대한 각 단어,하지만이 문제에 약간의 초보자를 느낄 수있어

좋아,이 예제를 직면 :

<h1>A<span>really</span>long<span>sentence</span></h1> 

I 배열에 각 단어를 동적으로 배치해야하지만 순서를 유지해야합니다. 뭔가 같은 :

var words = ['A','really','long','sentence']; 

내 원래 생각은하지만, 내가 제대로에 어떤 자바 스크립트/jQuery를 방법을 확인할 수 없습니다, 모두 병합 후 다른 배열로 범위가없는 배열에 모든 스팬, 모든 단어를 얻고,했다 스팬없이 단어를 배열로 모으십시오.

나는 뭔가를 놓치고 있다고 확신합니다. 어떤 아이디어?

감사합니다.

+0

현재 변수 배열의 이름을 지정하지 않으려합니다. – Jordan

+1

@Jordan i know! 그것은 단지 교육 목적이었습니다 =) 여전히 혼란을 피하기 위해 편집 할 것입니다 – Couto

+0

당신은 결코 알지 못합니다 :) – Jordan

답변

3

스팬으로 인해 지저분 해집니다. 스팬을 공간으로 바꾸고 공간으로 나눕니다. 그것은 일반 JS 가능한을 사용하는 것이 가장 좋습니다 동안

var array = $('h1').html().replace(/\<\/*span\>/g,' ').split(' '); 
+0

그리고 그건 제가 놓친 기본적인 것들이었습니다! 나는 해결책이 쉽다는 것을 알고 있었지만 기억이 안났다! (아마 내가 지금 RegEx를 배웠다면 ... 정말로 필요합니다!) 감사합니다! =) – Couto

+1

정규식을 배우려면 [rubular] (http://rubular.com)을 강력히 추천합니다. 나는 어딘가에 JS 특정 버전이 있다고 상상한다. – Jordan

0
function wordgrab(node){ 
    var A= []; 
    if(node){ 
     node= node.firstChild; 
     while(node!= null){ 
      if(node.nodeType== 3){ 
       if(/[a-zA-Z]/.test(node.data)){ 
        A= A.concat(node.data.split(/\s+/)); 
       } 
      } 
      else A= A.concat(wordgrab(node)); 
      node= node.nextSibling; 
     } 
    } 
    return A; 
} 

wordgrab (는 document.body) //

0

어떤 부모 노드를 사용, 그것은 안정적으로 HTML을 구문 분석하려고하는 불쾌한 일이기도하다 . jQ는 이미 여기에서 사용 중이기 때문에 $ .fn.text()를 계속 사용합니다.

var a = $('<h1>A <span>really</span> long <span>sentence</span></h1>').text().split(/\W+/); 
+0

공백이 없습니다. 그게 속임수 야. = \ – Couto

+0

나는 그것이 속임수라고 생각한다. 그러나 이것은 또한 여러분의 마크 업 구조가 IMO라는 것을 의미합니다. :) – JAAulde

+0

아마도 당신의 정직한 의견입니다. 아마 최종 결과에 대한 의도에 직면하지 않을 것입니다. http://jsfiddle.net/kg7tw/ – Couto

관련 문제