2014-12-16 3 views
1

다른 게시물을보고 답변을 찾고 있었지만 스크립트에 직접 사용할 수있는 항목을 찾을 수 없었습니다 (아직 JavaScript에 대한 나의 무지 일 수도 있습니다). .)링크 된 입력 필드에서 텍스트를 제거 할 때 NaN 제거

나는 라틴 알파벳에 외국어의 스크립트에서 및 onblur를 음역이 스크립트를 사용하고 있습니다 : 여기

<script> 
function separation() { 
    var str = document.getElementById().value; 
    var res1 = str.charAt(0); 
    var res2 = str.charAt(1); 
    var res3 = str.charAt(2); 
    document.getElementById().innerHTML = res1+res2+res3; 
}  

var syllable_1 = { 
'김' : 'Kim ', 
'이' : 'Lee ', 
'야' : 'Ya', 
} 
var syllable_2 = { 
'김' : 'gim', 
'이' : 'i', 
'야' : 'ya', 
} 

function hangul_to_roman(hangul) { 
    return syllable_1[hangul.charAt(0)] + syllable_2[hangul.charAt(1)] + (hangul.length >= 3 ? "-" + syllable_2[hangul.charAt(2)] : ""); 
} 
</script> 

<input type="text" id="ttt" value="김김이" onBlur="document.getElementById('demo').value = hangul_to_roman(document.getElementById('ttt').value)" style="text-transform: capitalize"> 
<input type="text" id="demo" readonly> 

당신이 바이올린에 같은 스크립트가 : http://jsfiddle.net/LGRAq/6/

T 그는 첫 번째 입력 필드에 음역 된 부분이 있고 두 번째 부분에는 음역이 표시됩니다. 그러나 첫 번째 입력 필드 안의 내용을 제거 할 때 NaN이 출력되며 제거 방법을 알고 싶습니다.

진행 방법을 아는 사람이 있습니까? 도움 주셔서 대단히 감사합니다!

답변

5

syllable지도에 hangul.charAt(…)이 포함되어 있지 않으면 속성 액세스가 undefined이됩니다. 두 개의 undefined을 함께 추가하면 NaN이됩니다. 당신은 조회에 대한 기본 값으로 빈 문자열을 사용하여 게재로부터 것을 방지 할 수 있습니다 :

function hangul_to_roman(hangul) { 
    return (syllable_1[hangul.charAt(0)] || "") 
     + (syllable_2[hangul.charAt(1)] || "") 
     + (hangul.length >= 3 ? "-" + (syllable_2[hangul.charAt(2)] || "") : ""); 
} 
+0

하나의 대답 (정의되지 않은 결과 및 NaN 결과)에서 두 가지 문제를 해결해 주셔서 감사합니다. 또한이 문제가 발생한 이유를 설명했습니다. 좋은 하루 되세요 ! – user2911849

0

브로, 우리는 너무 나타나지 NaN이를 제거하려면이 방법을 사용할 수 있습니다.

var str = document.getElementById(). value;

var res1 = str.charAt (0);

var res2 = str.charAt(1); 
var res3 = str.charAt(2); 
var res4 = res1+res2+res3; 
if(!isNaN(res4)) 
document.getElementById().innerHTML = res4; 
관련 문제