从链接的输入字段中删除文本时删除NaN

时间:2014-12-16 09:36:47

标签: javascript nan

我一直在寻找其他帖子的答案,但我找不到任何可直接用于我的脚本的内容(但也可能是我对JavaScript的无知......)

我使用此脚本将 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/

第一个输入字段包含应该音译的内容,第二个输入字段包含音译;但是在删除第一个输入字段中的内容时会打印 NaN ,并且我想知道如何删除它。

有谁知道如何继续? 非常感谢您的帮助 !

2 个答案:

答案 0 :(得分:5)

如果hangul.charAt(…)地图中未包含syllable,则属性访问权限将生成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)] || "") : "");
}

答案 1 :(得分: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;