如何更改用户输入的类型?javascript

如何更改用户输入的类型?javascript,javascript,Javascript,这里,userchoice是HTML中选定列表中的一个值,它是Matthew、Mark、Luke或John。我创建了一个名为generate的函数,它将输入作为括号 但是当我用userchoice调用它时,userchoice的值是一个字符串,代码不起作用。我想要的是从用户,即马修、马克、卢克、约翰那里获取输入。因此,我创建了具有类似名称的对象 它有什么解决方案或其他方法吗 让用户选择; 让马修={ 经文:[嗨,马太,'你好,上帝','你好,圭耶', 书:['Mark','john`] };

这里,userchoice是HTML中选定列表中的一个值,它是Matthew、Mark、Luke或John。我创建了一个名为generate的函数,它将输入作为括号

但是当我用userchoice调用它时,userchoice的值是一个字符串,代码不起作用。我想要的是从用户,即马修、马克、卢克、约翰那里获取输入。因此,我创建了具有类似名称的对象

它有什么解决方案或其他方法吗

让用户选择; 让马修={ 经文:[嗨,马太,'你好,上帝','你好,圭耶', 书:['Mark','john`] }; 让马克={ 经文:['Hi Mark','Hello good`], 书:['Mark','john`] }; 让卢克={ 经文:[‘嗨路加’,‘你好,上帝`], 书:['Mark','john`] }; 让约翰={ 经文:[嗨,约翰,'你好,上帝', 书:['Mark','john`] }; document.querySelector'generate'。addEventListener'click',函数{ userChoice=document.querySelector'selectValue'。值; 生成选择; }; 函数生成器输入{ 随机数=Math.floorMath.random*Matthew.verse.length; verseResult=input.verse[randomNumber]; bookResult=input.book[randomNumber]; displayVerse.innerText=verseResult; displayBook.innerText=bookResult; } 选择一本书: 马修 做记号 卢克 约翰 生成 诗句:


Book:

您可以在对象上设置变量属性,然后可以通过字符串选择该对象上的属性。例如:

让用户选择; 让马修={ 经文:[嗨,马太,'你好,上帝','你好,圭耶', 书:['Mark','john`] }; 让马克={ 经文:['Hi Mark','Hello good`], 书:['Mark','john`] }; 让卢克={ 经文:[‘嗨路加’,‘你好,上帝`], 书:['Mark','john`] }; 让约翰={ 经文:[嗨,约翰,'你好,上帝', 书:['Mark','john`] }; //包含它们作为属性的新对象 让选择={ 马太福音, 做记号 卢克, 约翰 }; document.querySelector'generate'。addEventListener'click',函数{ userChoice=document.querySelector'selectValue'。值; 生成选择; }; 函数生成器输入{ //使用该字符串从新对象中选择属性 让福音=选择[输入]; randomNumber=Math.floorMath.random*goods.verse.length; 经文[随机数]; bookResult=福音书[随机数]; document.querySelector'verse'。innerText=verseResult; document.querySelector'book'。innerText=bookResult; } 选择一本书: 马修 做记号 卢克 约翰 生成 诗句:


书籍:

把所有福音传道者的名单作为一个目标

注意:您可以改为运行此onchange:

document.getElementById('selectValue').addEventListener('change', function() {
  generate(this.value);
});
无论如何:

让章节={ 马修:{ 经文:[嗨,马太,'你好,上帝','你好,圭耶', 书:['Mark','john`] }, 标记:{ 经文:['Hi Mark','Hello good`], 书:['Mark','john`] }, 卢克:{ 经文:[‘嗨路加’,‘你好,上帝`], 书:['Mark','john`] }, 约翰:{ 经文:[嗨,约翰,'你好,上帝', 书:['Mark','john`] } }; //从对象的关键帧生成下拉列表 document.getElementByIdselectValue.innerHTML+=Object.KeyChapters .mapchapter=>`${chapter}`.join; document.getElementById'generate'。addEventListener'click',函数{ const userChoice=document.getElementById'selectValue'。值; 生成选择; }; const generate=userChoice=>{ if!userChoice返回; chapter=chapters[userChoice];//获取所选的福音 const verse=Math.floorMath.random*chapter.verse.length;//长度不同 const book=Math.floorMath.random*chapter.book.length;//所以需要两个随机数 document.getElementByIddisplayVerse.innerText=chapter.verse[verse]; document.getElementByIddisplayBook.innerText=chapter.book[book]; }; 请选择
欢迎来到堆栈溢出。在回答这个问题时,如果不了解您是如何定义您提到的HTML选择的,那么很难回答这个问题?似乎找不到id为generate的HTML标记。@esqew我已经用HTML更新了这个问题。@gyohza感谢您的建议。我对javascript仍然没有信心。我正在努力改进,你的建议对我很重要@mplungjan你已经解释了很多,这很有帮助《马太福音》也有3节,但只有2本书