Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 函数中激励10后,var变为NaN_Javascript - Fatal编程技术网

Javascript 函数中激励10后,var变为NaN

Javascript 函数中激励10后,var变为NaN,javascript,Javascript,当我加载网站时,我希望浏览器定义要发布的值10,并且什么也不做,直到我按下一个按钮调用load_more()函数,该函数将该值增加10,并通过Ajax将其传递给PHP 理想的行为是在站点上发布10条帖子,然后每次按下按钮时再加载10条 但是PHP只是抛出了一个MySQL错误,日志显示post变量为NaN。您正在使用关键字var重新初始化变量,这就是问题所在 一个简单的post+=10可以正常工作。原因是var表示声明一个新变量。因此,您正在尝试创建一个新变量,并将其值设置为自身+10。新变量的默

当我加载网站时,我希望浏览器定义要发布的值10,并且什么也不做,直到我按下一个按钮调用load_more()函数,该函数将该值增加10,并通过Ajax将其传递给PHP

理想的行为是在站点上发布10条帖子,然后每次按下按钮时再加载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;