复杂的javascript逻辑
我想问一些棘手的javascript,这是关于if/else if/else的问题。 我想问“是”或“否”,这是逻辑:如果问题1是“是”,问题2是“是”,问题3是“否”,结果是“好”,如果问题1是“是”,问题2是“否”,问题3是“是”,结果是“不好”。我为这个案例编写了代码,但没有正常工作,这是我的代码,我使用html中的复选框选择答案: javascript复杂的javascript逻辑,javascript,Javascript,我想问一些棘手的javascript,这是关于if/else if/else的问题。 我想问“是”或“否”,这是逻辑:如果问题1是“是”,问题2是“是”,问题3是“否”,结果是“好”,如果问题1是“是”,问题2是“否”,问题3是“是”,结果是“不好”。我为这个案例编写了代码,但没有正常工作,这是我的代码,我使用html中的复选框选择答案: javascript <script type="text/javascript"> var question1 = document.getE
<script type="text/javascript">
var question1 = document.getElementById("a");
question2 = document.getElementById("b");
question3 = document.getElementById("c");
answer1 = document.getElementById("d");
answer2 = document.getElementById("e");
answer3 = document.getElementById("f");
answer4 = document.getElementById("g");
answer5 = document.getElementById("h");
answer6 = document.getElementById("i");
function TheResult(form){
if(question1 == answer1 && question2 == answer3 && question3 == answer6 ){
document.write('good');
}else if(question1 == answer1 && question2 == answer4 && question3 == answer5 ){
document.write('not good');
}else {
document.write('ERROR');
}
}
var question1=document.getElementById(“a”);
问题2=document.getElementById(“b”);
问题3=document.getElementById(“c”);
answer1=document.getElementById(“d”);
answer2=document.getElementById(“e”);
answer3=document.getElementById(“f”);
answer4=document.getElementById(“g”);
answer5=document.getElementById(“h”);
answer6=document.getElementById(“i”);
功能结果(表格){
如果(问题1==回答1和问题2==回答3和问题3==回答6){
文件。填写(“良好”);
}否则如果(问题1==回答1和问题2==回答4和问题3==回答5){
文件。写(“不好”);
}否则{
文件。写入(“错误”);
}
}
html
问题1
对
否
问题2
对
否
问题3
对
否
我的代码在任何情况下都会打印“好”,请帮助 尝试在每种情况下使用此选项:
var question1 = document.getElementById("a").innerHTML;
var answer1 = document.getElementById("d").innerHTML;
if(question1 == answer1 ){
document.write('good');
}
从简单开始,然后建立起来。实际上,我对你提出的逻辑感到相当困惑。正如许多人指出的那样,您正在尝试将元素相互比较。这不会给你想要的结果。您需要根据元素类型使用
.innerHTML
或.value
我看到的下一个问题是,HTML结构、问题和答案之间没有任何关联
我看到的另一个问题是在声明JS变量时出现的。您正在尝试链接您的声明,这很好。虽然您需要使用,
而不是代码>。代码>应仅位于最后一个要声明的代码上
我想这些问题大部分都是因为你给了我们一些示例代码。我希望您的真实代码不是这样的,否则您的问题中会出现其他问题
不管怎样,我有一个解决办法给你。我以一种对我更有意义的方式重写了它:
HTML:
问题1
对
不
问题2
对
不
问题3
对
不
我做了两个改变。我去掉了
元素,取而代之的是
。然后我将复选框改为单选按钮
JS
function theResult(){
var inputs = document.getElementsByTagName('input');
var question = [ {selected: '', expected: 'YES'},
{selected: '', expected: 'YES'},
{selected: '', expected: 'NO'}
];
var tmpSelected = [];
for(var i = 0; i < inputs.length; i++){
var tmp = inputs[i];
if(tmp.type == 'radio' && tmp.checked){
tmpSelected.push(tmp.value);
}
}
for(var i = 0; i < tmpSelected.length; i++){
question[i].selected = tmpSelected[i];
}
validateResults(question);
};
function validateResults(results){
var status = '';
for(var i = 0; i < results.length; i++){
if(results[i].selected != results[i].expected){
status = 'Not Good'
break;
} else {
status = 'Good';
}
}
console.log(status);
return status;
}
函数theResult(){
var inputs=document.getElementsByTagName('input');
var question=[{所选:'',应为:'YES'},
{所选:'',应为:'是'},
{所选:'',应为:'否'}
];
var tmpSelected=[];
对于(变量i=0;i
正如你所看到的,我对这个做了很多修改。我想在所选答案和预期答案之间做出更好的映射
- 然后我们浏览并获取页面上的所有输入。在第一个循环中,我们确保只接受
单选按钮
&只查看已选中的按钮。我们把它们塞进一个数组tmpSelected
李>
- 然后我们将
tmpSelected
的值分配给我们的question
对象,特别是分配给.selected
。这将便于与预期答案进行比较
- 然后我们将调用一个不同的函数来验证结果(这个逻辑可以保留在前一个函数中,我只是喜欢把东西拆分一下,使它们更模块化)李>
validateResults()
simple将所选的与进行比较。预期的。如果它们不匹配,我们将中断
循环并返回状态
“不好”
。否则我们会继续评估。我这样做是因为您的代码似乎只是返回一条成功/失败类型的消息,而不一定说哪些答案不正确
结果正确记录到控制台。因此,您只需将其更改回您的文档。write()
您正在比较元素???比较元素。。。呵呵!应该是question2.值。。。那么,继续……
…您希望问题1==answer1
做什么?我想您可能在寻找。值
…您是在比较元素,而不是它们的值。无论如何,问题1(例如)除了作为一个对象之外没有其他价值。除了,给定他的HTML,这些也不会相等。啊!对也许重新开始,让事情变得简单。需要获得以下等价项:
var x1=document.getElementById(“myCheck”)。selectedIndex;var y=document.getElementById(“myCheck”)。选项警报(“索引:+y[x1]。索引+”是“+y[x1]。文本);
<form>
<label for="a1" id="a">Question 1</label>
<input type="radio" name="a1" value="YES" id="d">YES
<input type="radio" name="a1" value="NO" id="e">NO
<br>
<br>
<label for="a2" id="b">Question 2</label>
<input type="radio" name="a2" value="YES" id="f">YES
<input type="radio" name="a2" value="NO" id="g">NO
<br>
<br>
<label for="a3" id="c">Question 3</label>
<input type="radio" name="a3" value="YES" id="h">YES
<input type="radio" name="a3" value="NO" id="i">NO
<br>
<br>
<input type="button" name="Submit" value="Result" style="margin-left:100px;" onClick="theResult()">
</form>
function theResult(){
var inputs = document.getElementsByTagName('input');
var question = [ {selected: '', expected: 'YES'},
{selected: '', expected: 'YES'},
{selected: '', expected: 'NO'}
];
var tmpSelected = [];
for(var i = 0; i < inputs.length; i++){
var tmp = inputs[i];
if(tmp.type == 'radio' && tmp.checked){
tmpSelected.push(tmp.value);
}
}
for(var i = 0; i < tmpSelected.length; i++){
question[i].selected = tmpSelected[i];
}
validateResults(question);
};
function validateResults(results){
var status = '';
for(var i = 0; i < results.length; i++){
if(results[i].selected != results[i].expected){
status = 'Not Good'
break;
} else {
status = 'Good';
}
}
console.log(status);
return status;
}