2012-11-23 2 views
1

캐리지 리턴 만 포함하는 일부 요소를 숨기려면 자바 스크립트를 작성하려고합니다. 이 문제를 해결하는 올바른 방법은 이러한 요소가 생성되는 것을 막는 것이지만 불행히도이 경우에는 불가능하다는 점에 감사드립니다. 나는 사용자에게 불필요한 요소를 검색하기 위해 정규 표현식을 사용하려고하지만 많은 행운이 없다. 필자가 작성한 기능은 다음과 같습니다.자바에서 캐리지 리턴에 일치하는 정규식

function HideEmptyP() 
{ 

    var patt = (\\r) 
    for(var i = 0;i<desc[i].length;i++); 
    { 
    var desc[i] = document.getElementsByClassName('sitspagedesc'); 
    var result[i] = patt.test(desc[i]); 
     if (result[i] == true) 
      { 
      desc[i].style.display='none'; 
      } 
     else 
      { 
      alert("No Match!"); 
      } 
    } 

웹 콘솔에 표시되는 오류는 '구문 오류 : 잘못된 문자'입니다.

해결 방법에 대한 아이디어에 감사드립니다.

미리 감사드립니다.

+1

'var patt = (\\ r)'<== 잘못된 구문 – elclanrs

답변

5

I am trying to write some Javascript to hide some elements that contain only carriage returns.

예를 들어보십시오 :

if (demo[i].innerHTML === "\\r") { 
    // Remove it 
} 

을하지만 일부 브라우저는 하나의 변환 수 있음을 조심 캐리지 리턴. "\\r", "\\n" 및 공백 만 확인하고 싶을 수 있습니다. 그렇게하려면 일 수도 있고 정규 표현식을 사용하고 싶을 수도 있습니다.

정규 표현식 리터럴 ((\\r))은 완전히 유효하지 않으므로 올바른 구문을 배우려면 reading up on them의 가치가 있습니다. JavaScript에서 정규식 리터럴을 작성하려면 /을 구분 기호로 사용하십시오. 그래서 : /\\r/. 문자열에 \r, \n 또는 공백 만 포함되는지 테스트하려면 /^[\r\n ]+$/ (일치하는 하나 이상의 문자가 필요하고 시작 문자열을 나타내는 데 ^, 종료 문자를 나타내려면 $을 사용해야합니다.) :

if (demo[i].innerHTML.match(/^[\r\n ]+$/) { 
    // Remove it 
} 
+0

도움을 주셔서 감사합니다. 정규 표현식을 사용하면 완벽하게 작동하는 것이 좋습니다! –

+0

@AndyKaufman : 좋은 거래! –

+0

@T 죄송합니다. 아직도 n00b가 조금 있습니다! 지금 받아 들였습니다. –

0

귀하의 litteral이 이상하게 보입니다.

, 그냥 "\\r"에 요소의 innerHTML 속성을 비교, 그것을위한 정규 표현식에 대한 필요가 없습니다 var patt = /\r/;

0

선언 var에 패티가 = (\ R) 그것이 = '\ R'var에 패티와 같은 somethign해야 부정확하기 때문에 당신이 구문 오류지고 그 이유는;

전체 for 루프가 잘못되었습니다.

당신이하지 그 안에 루프의 시작하기 전에 데모를 정의해야하고, 결과는 배열이 필요하지만, 단지 일반 변수

0
var patt=/\n/gi 

작동합니다.

여분 i는 대소 문자를 구분하지 않습니다. 글로벌 검색에 g

+0

/\ n/gi는 정규 표현식이며 문자열의 모든 \ n 항목을 찾거나 바꿉니다. – vnextcoder