JavaScript多代码转象形文字字符串功能故障排查求助
解决多代码输入转换象形文字的问题
嘿,我看到你的问题啦,确实是几个小细节出了问题,咱们一步步来修正:
问题根源分析
你猜的没错,核心问题集中在数组处理和循环逻辑上:
- 字符串误用数组方法:你把
finalCodeHolder定义成了空字符串"",但字符串没有push()方法,只有数组才支持这个操作,这是报错的主要原因。 - 循环迭代变量错误:for循环里的增量部分写了
index++,但你的循环控制变量是i,应该改成i++,不然循环根本无法正常遍历输入拆分后的数组。 - 数组未转字符串:直接把数组插入DOM会导致元素之间出现逗号,需要先把数组拼接成完整的字符串。
修正后的完整代码
<body> <input id="userInput" name="userInput" type="text"> <button id="convert">Click me!</button> <div id="hieroglyphs"> <p id="AbydosWord"></p> </div> <script> $(document).ready(function() { $("#convert").click(function(){ var GardinerToUnicodeCodePoint = { "A1" :"995328", "A1A" :"995329", "A1B" :"995330", "A1C" :"995331", "A2" :"995332", "A2A" :"995333", }; // 将存储容器改为数组 var finalCodeHolder = []; var userInput = $("#userInput").val(); var userInputSplit = userInput.split(" "); // 修正循环增量为i++ for (let i = 0; i < userInputSplit.length; i++) { // 过滤空字符串(处理用户输入的连续空格) if (!userInputSplit[i]) continue; if (userInputSplit[i] in GardinerToUnicodeCodePoint) { var convertedCode = String.fromCodePoint(GardinerToUnicodeCodePoint[userInputSplit[i]]); finalCodeHolder.push(convertedCode); } else { finalCodeHolder.push("?"); } } // 清空原有内容并插入拼接后的字符串 $("#AbydosWord").empty().append(finalCodeHolder.join("")); }); }); </script> </body>
额外优化说明
我还加了一个小细节:用if (!userInputSplit[i]) continue;过滤空字符串,这样用户输入连续空格时,不会生成多余的?,体验更友好。
内容的提问来源于stack exchange,提问作者Boris J.
相关产品推荐
相关产品推荐

