Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.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不断取消定义我的变量,它';它刺耳了我的嗡嗡声。帮忙?_Javascript - Fatal编程技术网

Javascript不断取消定义我的变量,它';它刺耳了我的嗡嗡声。帮忙?

Javascript不断取消定义我的变量,它';它刺耳了我的嗡嗡声。帮忙?,javascript,Javascript,这是我第一次使用javascript,而且。。。好。。。啊。下面是正在发生的事情: function step_1(id) { //blah blah step_2(id); } function step_2(id) { //blah blah step_3(id); } function step_3(id) { //blah blah alert(id); } step_1(0); // I can stick any number her

这是我第一次使用javascript,而且。。。好。。。啊。下面是正在发生的事情:

function step_1(id) {
    //blah blah
    step_2(id);
}
function step_2(id) {
    //blah blah
    step_3(id);
}
function step_3(id) {
    //blah blah
    alert(id);
}

step_1(0); // I can stick any number here, same thing happens...
警报弹出并显示“未定义”。但是,如果我抛出警报(id);在步骤2中,两个警报均显示“0”

为什么/如何定义id?我做错了什么

我甚至尝试在每个函数中重新分配id,如:

var nid = id;
step_2(nid);
等等。。。但如果没有警报,这仍然不起作用


编辑:因为我的例子显然很好用,也许这会有帮助。它工作正常,除非我取出警报(id);第11行。

步骤2和步骤2之间存在差异。还有所有其他的小步骤……

\u步骤中的步骤可能会终止程序,buzz step2和step2是两个不同的东西

在checkUpload的末尾有一行(第30行)在不带任何参数的情况下自动调用:

    window.setTimeout('checkUpload();', 333);
看起来这就是你想要做的:

    window.setTimeout(function() { checkUpload(id); }, 333);

    // which is the equivalent to:
    // window.setTimeout("checkUpload(" + id + ");", 333);

您的脚本通过计时器重新调用
checkUpload()
,而不传递预期的id参数

第30行

window.setTimeout('checkUpload();', 333);
改为

window.setTimeout( function(){ checkUpload(id); }, 333 );

将来,作为一条有用的建议,我鼓励你在第一次发布你的实际问题,而不是你认为能说明问题的一个简化的例子。只需节省每个人的时间和精力;)

伙计,我不知道这个答案是否与其他人所指出的相关,但从您的代码中可以看到一些观察结果

if (uploadFrame.contentDocument.readyState == 'complete') {
            if (uploadFrame.contentDocument.getElementById('new_image_id')) {
                    var new_id = uploadFrame.contentDocument.getElementById('new_image_id').innerHTML;

真的!您应该知道“==”不是正确的运算符,但“==”是。js学习者/用户经常犯的错误。此外,您可能需要重新检查id,它是
'new\u image\u id'
还是
'new\u image\u'+id

阿克,那只是我把问题打得太快了。我修好了。如果问题就这么简单就好了。好吧,我刚刚用Firebug一字不差地运行了你的新代码,我得到了一个消息为“0”的警报。所以我不知道你有什么问题。可能是//诸如此类的部分出错了?我已经花了三天时间仔细研究这段代码了,我找不到它。我刚刚在我的代码中添加了一个pastebin链接。适用于我+1的“它刺耳了我的嗡嗡声”。哈哈。我想知道“基恩·马弗里克”是否也会双打他的衣领。Javascript:IM在你的浏览器中定义你的变量。是的!!哈哈,你真棒!我现在觉得自己像个十足的白痴爸爸贴了一个“刺耳我的嗡嗡声”的标签。所以给肉丸子一些爱,给他打勾=readyState是否会在任何情况下返回一个非字符串,该字符串=='s true to'complete'?或者javascript===与php的===不同?还是我完全误解了==/==的概念?是的,我想要‘new_image_id’——这是刚刚上传的图像的mysql_insert_id()。让我知道在AJAX请求中将图像描述发送到哪里。==通常返回值相等,而不是类型相等。js的重言式是个婊子,拇指规则只能使用===和!==这就是你的意图。来自web的参考:事实上,如果你只需要确保你的简化示例能够真正说明问题就更好了!