基本上我有两个阵列,一个包含法语的1-30,另一个包含1-30的英语。我一直试图做的是检查用户是否为法语号码选择了正确的翻译。这是以选择菜单的格式完成的。 5个随机数用于从英语单词数组中挑选5个英语单词,然后将它们放入选择菜单。在我点击提交猜测的那一刻,它会说每个ENGLISH翻译都和我的法语单词一样!
number = random = Math.floor((Math.random() * 30));
round = Math.round(number);
number = round;
function wordGen()
{
var RanNumbers = new Array(6); //Holds the generated Numbers.
for (var j = 0; j < RanNumbers.length; j++)
{
var temp = 0;
do
{
temp = Math.floor(Math.random() * 30);
}while (RanNumbers.indexOf(temp) > -1)
RanNumbers[j] = temp;
}
//Instead give user option of 5 answers to choose from
//Only one answer can be true.
foreignWords = new Array('un', 'deux', 'trois','quatre', 'cinq', 'six', 'sept','huit', 'neuf','dix','onze', 'douze', 'treize', 'quatorze','quinze','seize', 'dix-sept', 'dix-huit', 'dix-neuf', 'vingt', 'vingt et un','vingt-deux', 'vingt-trois', 'vingt-quatre', 'vingt-cinq', 'vingt-six', 'vingt-sept', 'vingt-huit', 'vingt-neuf', 'trente');
var translate = new Array('one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten', 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen', 'twenty', 'twenty-one', 'twenty-two', 'twenty-three', 'twenty-four', 'twenty-five', 'twenty-six', 'twenty-seven', 'twenty-eight', 'twenty-nine', 'thirty');
output = '';
randomWord = foreignWords[number];
correctAns = translate[number];
document.getElementById('generatedWord').innerHTML = randomWord;
var guessed = document.getElementById('guessed').value;
var guess = "<select name='guesses' id='guesses'>";
for(var i = 0; i < 6; i++)
{
guess += "<option value='" + i + "'>" + translate[RanNumbers[i]] + "</option>";
}
guess += '<option value="6">'+correctAns+'</option';
guess += "</select>";
document.getElementById('output').innerHTML = guess;
numGuessed = document.getElementById('guesses').value;
//What I have tried ATM, THis will say every answer is correct!
document.getElementById('submitAns').onclick = function(){
if(foreignWords.indexOf(number) === correctAns.indexOf(number)){
alert("Correct");
}
else{
alert('Incorrect');
}
}
}
<div data-role="page" id="page">
<div data-role="header">
<h1>Page One</h1>
</div>
<div data-role="content">
<h2 style="color:rgba(0,153,204,1);">Guess what the generated french word translates to in English!</h2><br />
<p align="center" id="generatedWord"></p>
<input type="button" value="Generate Word" onClick="wordGen();" />
<br />
<input type="text" id="guessed" />
<div align="center" id="output"></div>
<br />
<input type="button" id="submitAns" value="Submit Guess" />
</div>
所以目前我的if语句说每个英语单词都是正确的答案。在我的HTML页面中,我只有2个按钮,一个用于运行功能(显示法语单词和选择菜单),另一个按钮用于提交猜测。 ***如果我需要使用jquery,我会,但我更喜欢使用普通的javascript!
答案 0 :(得分:0)
我不是肯定的,因为我不确定你是如何显示你的外来词和非外来词,但是,我认为:
numGuessed === number
应该有用,因为据我所知,numGuessed
在猜测的单词的索引中,而number
是要翻译的单词的索引。
如果这不起作用,请在您的问题中澄清HTML的工作原理,并告诉我您已编辑过,我将编辑我的答案。
答案 1 :(得分:0)
我立即看到了代码逻辑中的一些问题。我先说一下。
您正试图获取id
“猜到”的元素的值。您的html
中没有任何包含此ID的元素。我假设您正在尝试使用select
“猜测”来获取id
元素的值,但由于您在尝试获取其值之后创建元素,因此再次无效。< / p>
var guessed = document.getElementById('guessed').value;
var guess = "<select name='guesses' id='guesses'>";
...
变量randomWord
和correctAns
是从您创建的两个数组中从索引number
中获取的简单字符串。所以下面的陈述没有意义:
foreignWords.indexOf(number) === correctAns.indexOf(number)
这没有意义,因为correctAns
是一个字符串,因此它会尝试尝试将index
作为子字符串首次出现number
。 foreignWords
是一个数组,因此这里显然存在不匹配。
事实上,您只需要正确理解这一逻辑,即断言用户选择了正确的答案。您只需获取所选text
的{{1}}属性,然后尝试查看它是否等于option
变量。你可以这样做:
correctAns
我创建了一个简单的jsfiddle,将此代码段合并到您的逻辑中,似乎工作正常。随意玩它,我希望它能让你开始朝着正确的方向前进。
旁注 - 我看到您正在添加正确答案,即 document.getElementById('submitAns').onclick = function () {
var x = document.getElementById("guesses").value; //get the index of selected option
var guessed = document.getElementsByTagName("option")[x].text; //get the text of that option
if (ans === correctAns) {
alert("Correct");
} else {
alert('Incorrect');
}
}
始终在correctAns
列表的底部,如下所示:select
。这不是随机的,对于使用你的程序的人来说,他/她可能会在几次尝试中看到这种模式而不会得到一些英文数字:P。尽量考虑到这一点。
答案 2 :(得分:0)
匹配数字(用随机数生成)来转换数组索引,因为它在外部数组中生成输出,如果匹配则答案是正确的。
function arrayValueIndex(arr, val){
for(var i=0; i< arr.length; i++) {
if(arr[i] === val) {
return i;
}
}
return false;
}
并在您的点击事件中
document.getElementById('submitAns').onclick = function() {
var
genWord = document.getElementById('generatedWord').textContent,
select = document.getElementById('guesses'),
selectedText = select.options[select.selectedIndex].text;
number === arrayValueIndex(translate, selectedText) ? alert("Correct") : alert('Incorrect');
};