2013-08-14 3 views
0
var _myTxt; 
var _myWord; 
var _count; 
var _count2; 

function _findWord() { 
    _myTxt = document.getElementById('myTextBox').value; 
    _myWord = document.getElementById('myTxtField').value; 
    var re = new RegExp(_myWord, "gi"); 
    _myTxt = _myTxt.replace(re, "<span style='font-weight: bold'>$&</span>"); 
    _count = _myTxt.match(re); 
    _count2 = _count.length; 
    alert(_count.length); // alert returns nothing when there is 0 match ?! 
    if (_count < 1) { 
     document.getElementById("_idProcessedTxt").innerHTML = "There is no matching occurence for searched word"; 
    } else { 
     document.getElementById("_idProcessedTxt").innerHTML = _myTxt; 
     document.getElementById("_idProcessedTxt2").innerHTML = ("Your word was matched : " + _count2 + " times."); 
    } 
} 

안녕은, 위의 코드가 가정된다 : 일치 항목이 발견되지 않으면 왜 실패합니까?

  1. 이 다른 문자열 (스팬 태그와 실제로 동일한 문자열) 및 배 발생
  2. 카운트 수에 의해 문자열을 대체/교체가 발견되었다.

그것은 적어도 하나 이상의 일치가 모든 경우에 적합합니다. 어떤 이유로 나는 이해하지 못한다. 입력 한 단어가 전혀 일치하지 않을 때 작동하지 않는다. 이것은 코드를 완전히 깨뜨리는 것처럼 보입니다. 심지어 일치가 0 일 때도 경고는 아무것도 반환하지 않습니다.

실마리가 있습니까? .match() 더 일치를 발견하지 않는 경우

+0

당신은 http://jsbin.com/ 또는 http://jsfiddle.net/에 코드를 게시하고 링크를 포함하도록 질문을 편집 할 수 있습니까? –

+1

이미'_count2'를 만들었을 때 돌아 오는 이유로'_count.length'를 사용하는 이유가 무엇입니까? – Jordan

+1

자바 스크립트 오류 콘솔에 대해 배울 수있는 좋은 시간입니다. – JJJ

답변

2

, 그것은 null를 반환합니다. 따라서, 때 "_count는"null, 다음 라인 (! 당신이 개발자 콘솔에서 볼 것)

_count2 = _count.length; 

이 오류가 발생합니다.

.match() 일 때 하나 이상의 일치 항목을 찾으면 배열을 반환합니다. 따라서 함수에서이 이후의 코드는 : 당신이 수에 배열을 비교하고 있기 때문에

if (_count < 1) { 

은 이해가되지 않습니다.

+0

OP의 이점으로, Pointy가 지적한'if' 문에서'_count2'를 사용하려고했을 가능성이 높습니다. – Jordan

+0

@ user2532739 예, "_count2"를 설정하는 코드가 수정 된 경우 작동합니다. 또는 그는 "_count"가 null이 아닌지 확인하기 만 할 수 있습니다. – Pointy

+0

답변 해 주셔서 감사합니다. 코드 에서처럼 if 문에서 null 또는 undefined를 확인하려고 시도했지만 작동하지 않았습니다. 그래서 내가 한 것은 _count = _myTxt.match (re) 바로 뒤에 if 문을 넣는 것입니다. .length가 호출되기 전에. 이제 제대로 작동합니다. 시원한. – Benj

관련 문제