您好我是JavaScript的新手,我无法弄清楚我的问题。
当我像这样输入我的代码时,如果$(document).ready(function(){
$("button").click(function(){
var x = $("form").serializeArray();
$.each(x, function(i, field){
if($(this).hasClass("images")){
$("#results").append("if is sentence is true "+field.name + ":" + field.value + " </br>");
}
else{
$("#results").append("if sentence is false "+field.name + ":" + field.value + " </br>");
}
});
});
或者它不是birth year + age === 2016
,它会正确记录两个语句
=== 2016
但是当我尝试输入我的代码时,如果用户输入使用提示,它就不起作用了。即使是var newAge = function (yearsAlive) {
yearsAlive = this.yearBorn + this.age ;
if (yearsAlive === 2016) {
document.write("That Sounds about right to me ! ");
} else {
document.write("Your age cant be right , please try again");
}
} ;
var me = {
name: "Markese" ,
yearBorn: 1991,
age: 25,
years: newAge
} ;
me.years()
,我仍然会收到else
日志:Your age cant be right, please try again
。我做错了什么?
=== 2016
答案 0 :(得分:0)
===
运算符意味着别的东西。请参阅此Link
您可以尝试在If子句中将===
更改为==
。
答案 1 :(得分:0)
我不知道您的prompt
函数是什么样的,但我会假设它返回了用户输入的字符串。在您的工作代码中,me.yearBorn
和me.age
两者都包含数值。但是在你的非工作代码中,你要为那些代码分配一个字符串。因此,当您稍后将两个字符串添加到一起时,它不会执行算术添加操作。它连接两个字符串。所以结果永远不会等于2016年。您需要使用parseInt()
将字符串转换为数字。试试这个......
var me = {
name: userName ,
yearBorn: parseInt(userBorn),
age: parseInt(userAge),
years: newAge
};
答案 2 :(得分:0)
这是我提出的最佳解决方案。您可以将函数硬编码到years变量中,而不是使用外部函数。这当然有它的缺点,所以我还包括一个使用外部函数的版本。
编辑:yearsAlive&gt; = 2016年,替换为yearsAlive&lt; = 2016
document.addEventListener('DOMContentLoaded', init, false);
function init() {
//simply change this part to reflect your needs.
var answer = document.getElementById('answer');
answer.innerHTML = me.years();
};
var me = {
name: "Markese",
yearBorn: 1991,
age: 25,
years: function(){
yearsAlive = this.yearBorn + this.age;
if (yearsAlive <= 2016) {
return yearsAlive;
} else {
return 'Your age cant be right , please try again';
}
}
};
OR
document.addEventListener('DOMContentLoaded', init, false);
function init() {
var answer = document.getElementById('answer');
//pass in the person object to a function
answer.innerHTML = newAge(me);
};
function newAge(person){
//extract the properties of that object
yearsAlive = person.yearBorn + person.age;
//return the proper result (or document.write())
if (yearsAlive <= 2016) {
return yearsAlive;
} else {
return 'Your age cant be right , please try again';
}
}
var me = {
name: "Markese",
yearBorn: 1991,
age: 25
};
您可能需要考虑使用实际日期对象来提取当前年份,然后使用它来代替2016年。这样您的代码就不会在2017年中断。