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

标签 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>

在这里,您在 Fiddle 中有相同的脚本:http://jsfiddle.net/LGRAq/6/

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

有没有人知道如何进行? 非常感谢您的帮助 !

最佳答案

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)] || "") : "");
}

关于javascript - 从链接的输入字段中删除文本时删除 NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27501478/

相关文章:

javascript - 将文本放在页面的中心和中间

javascript - 在 Javascript 中扩展对象

javascript - PhantomJS:无法通过单击或提交来提交输入

python - 我如何找到 : Is the first non-NaN value in each column the maximum for that column in a DataFrame?

matlab - 在 Matlab 中过滤包含 NaN 的图像?

javascript - HTML5 音频的 ontimeupdate 在 Chrome 中未触发

javascript - Underscore.js:_.object 函数的意外行为

python - 如何替换 pandas 上过滤的多列中的 nan 值?

ruby - 如何在 Ruby 中声明 NaN(不是数字)?

python - 为什么在 numpy `nan == nan` 中为 False 而 [nan] 中的 nan 为 True?