Javascript 函数中激励10后,var变为NaN
当我加载网站时,我希望浏览器定义要发布的值10,并且什么也不做,直到我按下一个按钮调用load_more()函数,该函数将该值增加10,并通过Ajax将其传递给PHP 理想的行为是在站点上发布10条帖子,然后每次按下按钮时再加载10条Javascript 函数中激励10后,var变为NaN,javascript,Javascript,当我加载网站时,我希望浏览器定义要发布的值10,并且什么也不做,直到我按下一个按钮调用load_more()函数,该函数将该值增加10,并通过Ajax将其传递给PHP 理想的行为是在站点上发布10条帖子,然后每次按下按钮时再加载10条 但是PHP只是抛出了一个MySQL错误,日志显示post变量为NaN。您正在使用关键字var重新初始化变量,这就是问题所在 一个简单的post+=10可以正常工作。原因是var表示声明一个新变量。因此,您正在尝试创建一个新变量,并将其值设置为自身+10。新变量的默
但是PHP只是抛出了一个MySQL错误,日志显示post变量为NaN。您正在使用关键字
var
重新初始化变量,这就是问题所在
一个简单的
post+=10代码>可以正常工作。原因是var表示声明一个新变量。因此,您正在尝试创建一个新变量,并将其值设置为自身+10。新变量的默认值是未定义的,因此您说的是“var post=undefined+10”,这是NaN行
var post = 10;
function load_more(str) {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById("add").innerHTML = document.getElementById("add").innerHTML + xmlhttp.responseText;
}
};
var post = post + 10;
xmlhttp.open("GET", "fetch_more.php?number=" + post , true);
xmlhttp.send();
}
罪魁祸首在这里。Javascript有一个称为的行为,这本质上意味着变量总是在作用域的顶部声明
因此,在您的代码中,会发生以下情况:
var post = post + 10;
我希望您能看到,由于在函数的开头重新定义了post
,因此在post+10
中使用时,post
是undefined
,这会导致post=post+10
计算为NaN
(因为undefined+10
计算为NaN
)
要解决您的问题,只需从前面移除var
:
var post = 10;
function load_more(str) {
var post; // `post` is now undefined
//...other code
post = post + 10; // undefined + 10 evaluates to NaN
}
或:
使用post+=10
或post=post+10
在函数内部删除var
。它隐藏在函数外部声明的变量post
。从var post=post+10中删除var
代码>。该死的…它工作了…谢谢!谢谢我犯了一个愚蠢的错误。现在它就像一个符咒!
post = post + 10;
post += 10;