如何检测input输入内容是否存在于预设JS对象变量中
字符绘制程序开发问题及解决方案
项目背景
简而言之,我正在开发一款可将输入内容像写在纸上一样输出绘制的程序。
我已经完成了所有大写字母和数字的适配,因为代码较长,以下是简化版本的页面结构代码:
<form class="form1 " action=""> <input type="text" id="fname" name="fname" value="2" > </form> <button type="submit" id="buttonlog" onclick="sass();">console input</button>
初始代码定义
字符路径对象
const CapitalLetters = { "A" : [ "M24,36 L24,20 L13,3 L3,20 L3,36 v-10 h20 z", ], // 其余大写字母路径定义 }
检测函数
function sass() { var answers2 = document.getElementById('fname').value; var input = document.getElementById("buttonlog").value; if(CapitalLetters.hasOwnProperty(' ') == answers2) { console.log('yes') console.log(answers2); } else { console.log('no') console.log(answers2); } }
预期实现效果
检测输入框中填入的内容是否存在于我的对象变量中,就像示例中展示的A一样。如果input标签检测到输入了大写A,后续就可以调用对应的路径代码执行逻辑。
补充说明:比如在输入框中填入字母A或者b,需要检测这个字符是否存在于对象变量CapitalLetters中。
最终解决方案
我已经找到解决方案了,首先我将CapitalLetters、LowerLetters、NumberLetters拆分为独立的对象,把每个对象的格式从:
const CapitalLetters = { "A" : [ "M24,36 L24,20 L13,3 L3,20 L3,36 v-10 h20 z", ], // 其余大写字母路径定义 }
修改为:
const path = CapitalLetters[input] = { "A" : [ "M24,36 L24,20 L13,3 L3,20 L3,36 v-10 h20 z", ], // 其余大写字母路径定义 }
对应修改后,再将if语句调整为:
if(CapitalLetters.hasOwnProperty(answers2) || LowerLetters.hasOwnProperty(answers2) || NumberLetters.hasOwnProperty(answers2) ) { // 匹配到字符后的执行逻辑 }
感谢大家的帮助。
内容的提问来源于stack exchange,提问作者Bryan
相关产品推荐
相关产品推荐

