我对下面的代码有一些问题:
-
我在第11行定义了一个名为iMax的全局变量。不过,如果我试着在17号线打电话,那就没用了。为什么?[已回答]
-
由于节点模块"cheerio"one_answers"request",此脚本在web浏览器中不起作用,但它在本地命令提示符下起作用。有没有什么方法可以让在网页中运行另一个javascript来与之共享变量,并执行该javascript以在网页外(本地)运行?这两个java脚本将位于同一目录中。[未回答]
-
当我删除'urls=[];'时从第3行,奇怪的是,我得到了一个错误,上面写着:
请求('http://forum.blockland.us/index.php?action=profile;u=137487;sa=showPosts'
SyntaxError:意外的令牌(
这对我来说毫无意义,因为'urls=[];'在代码中没有任何用途。你知道为什么会这样吗?[已回答]
-
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 }
声明var iMax={您的cool使用的默认值};顶部。
现在,在iMax真正声明之前,您实际上已经调用了for循环。
"当你只有一把锤子时,一切看起来都像钉子"。你没有以正确的方式使用正确的技术来实现你的目标。
浏览器中运行的JavaScript是在客户端的沙盒上运行的,因此在服务器上设置全局变量,然后运行node.js实例可能是不切实际的。
您可能需要的是一个轻量级的web服务器。。。如果您愿意,Node可以为您做这件事,并接受POST。一个简单的HTTP服务器是Node.js的第一个教程之一。然后你可以用张贴的信息做你想做的事。
实际上,一个简单的web服务器,带有一个脚本模块,可以传递信息并运行node.js,这可能是可持续实现这一目标的最简单方法。
其他海报是正确的,注意JavaScript中一行中的多个语句,这被认为是错误的做法。
您可能应该在全局范围内调用请求之前定义变量:var iMax;
或使用window.iMax = (totalPages - 1) * 15;
。但事实上,您应该在请求函数中使用for循环,因为如果您没有设置iMax
,否则可能不需要它。
删除带有urls = [];
的行时,实际上也删除了分号;
。
这使得下一行成为声明行,这意味着cheerio = require('cheerio'),
行之后的所有内容都成为变量的另一个声明。错误的语法错误。
因此,删除行urls = [];
,但将逗号替换为分号,这样就有了cheerio = require('cheerio');