Javascript全局变量不起作用&;更多 我对下面的代码有几个问题:

Javascript全局变量不起作用&;更多 我对下面的代码有几个问题:,javascript,node.js,global-variables,Javascript,Node.js,Global Variables,我在第11行定义了一个名为iMax的全局变量。但如果我试着在17号线上打电话,那就不行了。为什么?[回答] 由于节点模块“cheerio”和“request”,此脚本在web浏览器中不起作用,但它在本地命令提示符下起作用。有没有办法让另一个javascript在网页中运行,与之共享变量,并执行此javascript以在网页上运行(本地)?这两个Java脚本将位于同一目录中。[未答复] 当我删除“URL=[];”时奇怪的是,我从第3行得到一个错误,上面写着: 请求(“” 语法错误:意外标记( 这对

我在第11行定义了一个名为iMax的全局变量。但如果我试着在17号线上打电话,那就不行了。为什么?[回答]

  • 由于节点模块“cheerio”和“request”,此脚本在web浏览器中不起作用,但它在本地命令提示符下起作用。有没有办法让另一个javascript在网页中运行,与之共享变量,并执行此javascript以在网页上运行(本地)?这两个Java脚本将位于同一目录中。[未答复]

  • 当我删除“URL=[];”时奇怪的是,我从第3行得到一个错误,上面写着:

    请求(“”
    语法错误:意外标记(

    这对我来说毫无意义,因为“URL=[];”在代码中没有任何用途。知道为什么会发生这种情况吗?[已回答]

  • -

    1 var request=require('request'),
    2 cheerio=要求(“cheerio”),
    3个URL=[];
    4.
    5.
    6请求('http://forum.blockland.us/index.php?action=profile;u=137487;sa=showPosts',函数(err、resp、body){
    7如果(!err&&resp.statusCode==200){
    8 var$=零荷载(主体);
    9$('b:contains(…)','tr.catbg3')。每个(函数(){
    10 totalPages=$(this.next().text();
    11 iMax=(总页数-1)*15;
    12          });
    13      }
    14    });
    15
    16
    
    17对于(i=0;i您可能应该在调用请求之前定义变量:
    var iMax;
    在全局范围内或使用
    window.iMax=(totalPages-1)*15;
    。但事实上,您应该在请求函数中使用for循环,因为如果您没有在顶部设置
    iMax

    声明var iMax={一个默认值,那么它可能是不必要的


    现在,您实际上是在实际声明iMax之前调用for循环。

    当您删除带有
    url=[];
    的行时,您实际上也删除了分号

    这使得下一行成为声明行,这意味着行
    cheerio=require('cheerio'),
    之后的所有内容都成为变量的另一个声明。语法错误

    所以,一定要删除行
    URL=[];
    但要用分号替换逗号,这样你就有了
    cheerio=require('cheerio');

    “当你只有一把锤子时,一切看起来都像钉子”。你没有以正确的方式使用正确的技术来实现你的目标

    浏览器中运行的JavaScript是在客户端的沙箱上运行的,因此在服务器上设置全局变量(然后运行node.js实例)可能是不切实际的

    你可能需要的是一个轻量级的web服务器…如果你愿意,Node可以为你做这件事,并将帖子收回。简单的HTTP服务器是第一个Node.js教程之一。然后你可以用帖子信息做你想做的事

    实际上,一个带有脚本模块的简单web服务器,可以传递信息并运行node.js,这可能是实现可持续性的最简单方法


    其他海报是正确的,注意JavaScript中单行上的多个语句,这被认为是不好的做法。

    异步JavaScript不是一个问题吗?虽然声明的变量是在任何代码执行之前创建的,但隐式全局变量在创建它们的表达式执行之前是不存在的。因此iMax不是created,直到请求返回,但您尝试在调用请求后立即访问它。请坚持每个帖子一个问题。这个问题的答案变得相当混乱。是的,我明白您的意思(我原本打算让每个问题的数字更有条理)。这是我在这个论坛上发布的第一个问题,所以我还不知道其中的诀窍。我来自一个论坛,在第13行和第14行的内容之间插入for循环非常有效。太棒了。现在我只需要回答其他两个问题。我很难找到“简单HTTP服务器”Node.js教程。我真的很抱歉我不熟悉你提到的东西(我三天前开始写javascript哈哈)
    1    var request = require('request'),
    2       cheerio = require('cheerio'),
    3       urls = [];
    4    
    5       
    6    request('http://forum.blockland.us/index.php?action=profile;u=137487;sa=showPosts', function(err, resp, body){
    7       if(!err && resp.statusCode == 200){
    8           var $ = cheerio.load(body);
    9           $('b:contains(...)', 'tr.catbg3').each(function(){
    10              totalPages = $(this).next().text();
    11              iMax = (totalPages - 1) * 15;
    12          });
    13      }
    14    });
    15    
    16    
    17    for(i = 0; i <= iMax; i += 15)
    18    {
    19      console.log(i);
    20    }