更改在带有图像的测验中向用户显示的结果
Changing the results shown to user in a quiz with images
我正在做一个性格测验,用户在答案之间进行选择,这些答案都有不同的分数值,这些分数都有助于他们的分数。他们的分数改变了结果,并告诉他们他们的个性。对于结果,我想在图像旁边显示一条小消息。图像应根据他们的分数而变化。我的问题是无论我输入什么分数,用户都只会看到第一个可能的结果。我添加了console.logs
来检查他们的分数是否被计算在内,确实如此。我觉得我很接近,但我肯定错过了一些东西......
function computeAnswers(){
var score = 0;
var answers = document.getElementsByClassName("answerswer");
for (i = 0; i < answers.length; i++){
if (answers[i].checked){
if (answers[i].value === "groot"){
score += 1;
}
else if(answers[i].value === "starlord"){
score += 2;
}
else if(answers[i].value === "rocket"){
score += 3;
}
else if(answers[i].value === "gamora"){
score += 4;
}
else if(answers[i].value === "drax"){
score += 5;
}
else{
console.log("This function's facked");
}
}
}
var groot = new Image();
groot.src = "groot.jpg";
var starLord = new Image();
starLord.src = "starlord.jpg";
var rocket = new Image();
rocket.src = "rocket.jpg"
var gamora = new Image();
gamora.src = "gamora.jpg"
var drax = new Image();
drax.src = "drax.jpg"
if(score >= 0 <= 10){
document.getElementById("results").innerHTML = "You are groot!";
document.body.appendChild(groot);
console.log(score);
}
else if(score >= 11 <= 20){
document.getElementById("results").innerHTML = "I've heard of you! You're Star-Lord!";
document.body.appendChild(starLord);
console.log(score);
}
else if(score >= 21 <= 30){
document.getElementById("results").innerHTML = "You're Rocket! And don't forget it!";
document.body.appendChild(rocket);
console.log(score);
}
else if(score >= 31 <= 40){
document.getElementById("results").innerHTML = "You are the beautiful and deadly assassin Gamora!";
document.body.appendChild(gamora);
console.log(score);
}
else if(score >= 41 <= 50){
document.getElementById("results").innerHTML = "You are the fearsome warrior Drax The Destroyer!";
document.body.appendChild(drax);
console.log(score);
}
else{
console.log("This function is also facked");
}
}
我认为它在你的 if 语句中重新得分。您是否实际上通过上述编码获得了正确的消息,但只是没有获得图像?还是你也得不到?
例如,在您的第一个中,如果您更改以下内容会发生什么:
if(score >= 0 <= 10){
document.getElementById("results").innerHTML = "You are groot!";
document.body.appendChild(groot);
console.log(score);
}
自
if(score <= 10){
document.getElementById("results").innerHTML = "You are groot!";
document.body.appendChild(groot);
console.log(score);
}
如果这解决了问题,那么更改所有这些应该可以做到。当然,您需要适当地更改它们以适应您想要的值。
好吧,也许这有帮助。
正如@jeff所说,您必须将score >= 0 <= 10
更改为score >= 0 && score <= 10
:
function computeAnswers(){
var score = 0;
var answers = document.getElementsByClassName("answerswer");
answers = [
{
checked: true,
value: 'drax'
},
{
checked: true,
value: 'drax'
},
{
checked: true,
value: 'gamora'
},
{
checked: true,
value: 'drax'
}
];
for (i = 0; i < answers.length; i++){
if (answers[i].checked){
if (answers[i].value === "groot"){
score += 1;
}
else if(answers[i].value === "starlord"){
score += 2;
}
else if(answers[i].value === "rocket"){
score += 3;
}
else if(answers[i].value === "gamora"){
score += 4;
}
else if(answers[i].value === "drax"){
score += 5;
}
else{
console.log("This function's facked");
}
}
}
var groot = new Image();
groot.src = "http://orig04.deviantart.net/2c42/f/2014/224/5/7/i_am_groot___non_animated__by_milkycherry-d7uxumf.png";
var starLord = new Image();
starLord.src = "https://33.media.tumblr.com/avatar_974f79659bbf_128.png";
var rocket = new Image();
rocket.src = "http://ecx.images-amazon.com/images/I/41pM7y%2BJQOL._SS36_.jpg"
var gamora = new Image();
gamora.src = "https://p.dreamwidth.org/657a0566c4c3/-/img.photobucket.com/albums/v28/FamiraD/GotG_1/byfamira_036a.png"
var drax = new Image();
drax.src = "http://i.ebayimg.com/images/g/jVgAAOSw9r1WAeBC/s-l64.jpg"
if(score >= 0 && score <= 10){
document.getElementById("results").innerHTML = "You are groot!";
document.body.appendChild(groot);
console.log(score);
}
else if(score >= 11 && score <= 20){
document.getElementById("results").innerHTML = "I've heard of you! You're Star-Lord!";
document.body.appendChild(starLord);
console.log(score);
}
else if(score >= 21 && score <= 30){
document.getElementById("results").innerHTML = "You're Rocket! And don't forget it!";
document.body.appendChild(rocket);
console.log(score);
}
else if(score >= 31 && score <= 40){
document.getElementById("results").innerHTML = "You are the beautiful and deadly assassin Gamora!";
document.body.appendChild(gamora);
console.log(score);
}
else if(score >= 41 && score <= 50){
document.getElementById("results").innerHTML = "You are the fearsome warrior Drax The Destroyer!";
document.body.appendChild(drax);
console.log(score);
}
else{
console.log("This function is also facked");
}
}
computeAnswers();
相关文章:
- 如何在使用XMLHttpRequest时向用户显示实际的网络错误
- 从Meteor呼叫向用户显示相应的错误消息
- 如何从HTML页面中的用户显示中获取输入
- Google 表格:为特定用户显示不同的行
- 角度 ui-select 绑定到一个属性,但向用户显示另一个属性
- 希望仅为已登录的用户显示链接,否则它显示该链接在AngularJS和NodeJS中被隐藏或禁用
- 向用户显示多条确认消息的最佳方式
- 向用户显示坐标并触发事件
- 如何让网页显示一次,并且不再向用户显示
- 在 chrome 扩展程序中向用户显示消息
- 如何在用户关闭浏览器时向用户显示警报
- 在提交之前操作表单值而不向用户显示
- 更改在带有图像的测验中向用户显示的结果
- 在 PHP 中向随机用户显示 html 内容
- 如何检查网站用户显示的纵横比
- 向用户显示 JSON 时的 XSS
- 为国际用户显示消息
- 在 CRM 2011 上为用户显示/隐藏功能区按钮
- 有没有办法在向用户显示整个地图时隐藏数据库的地图数据
- 如何在不向用户显示更改的情况下调整发送到iframe的表单值