首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我要从exec中得到变量错误?

为什么我要从exec中得到变量错误?
EN

Stack Overflow用户
提问于 2018-11-19 03:37:19
回答 2查看 52关注 0票数 1

我和我的朋友正在试图解决这个问题,但是我们找不出答案,我们找到了一些针对这个错误提供解决方案的帖子,但是我们不知道如何将它应用到我们的情况中,所以基本上,代码应该返回所有的regex匹配,这是指

document.querySelector('#output-2').innerHTML=输出;

我们希望看到从a到输出的id =值,但是控制台说:

代码语言:javascript
复制
Uncaught SyntaxError: Unexpected token var

这个错误指的是这一行

代码语言:javascript
复制
while (var match = pattern.exec(string) !== null) 

那我为什么要犯这个错误呢?

这是我的密码

代码语言:javascript
复制
var names= document.querySelectorAll('.name');

var text = new Array();
var strtext = '';
 
for (var i = 0; i < names.length; i++){
var arlength = text.length;
text[arlength] = '['+names[i].getAttribute('id')+']';
}
strtext = text.join(' and ');
document.querySelector('#output-1').innerHTML= strtext;

//Show all the regex matches
var string= strtext;
var pattern= /\[(.*?)\]/ig;
var output = "";
while (var match = pattern.exec(string) !== null)
{
    output += match[1];
}
document.querySelector('#output-2').innerHTML = output;
代码语言:javascript
复制
<p id='a' class='name'>Adam</p>
<p id='b' class='name'>Bob</p>
<p id='c' class='name'>Cane</p>
<p id='d' class='name'>Dan</p>
<p id='e' class='name'>Ed</p>
<p id='f' class='name'>Fred</p>
<p id='g' class='name'>Gene</p>

<p id='output-1'></p>
<p id='output-2'></p>

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-11-19 03:42:47

var表示新变量的初始化,这种初始化只允许作为独立语句进行--变量初始化不能被解析为表达式,而while(的内部只能接受表达式(计算值为值的内容)。(与表达式相反,语句执行一些操作,如初始化值或执行if / then块)

match条件之外初始化while

还需要在match = pattern.exec(string)表达式周围加上括号,以便正确地将其与null进行比较,否则将将pattern.exec(string) !== null (即布尔值)的结果分配给output,这不是您想要的结果:

代码语言:javascript
复制
var names= document.querySelectorAll('.name');

var text = new Array();
var strtext = '';
 
for (var i = 0; i < names.length; i++){
var arlength = text.length;
text[arlength] = '['+names[i].getAttribute('id')+']';
}
strtext = text.join(' and ');
document.querySelector('#output-1').innerHTML= strtext;

//Show all the regex matches
var string= strtext;
var pattern= /\[(.*?)\]/ig;
var output = "";
var match;
while ((match = pattern.exec(string)) !== null)
{
    output += match[1];
}
document.querySelector('#output-2').innerHTML = output;
代码语言:javascript
复制
<p id='a' class='name'>Adam</p>
<p id='b' class='name'>Bob</p>
<p id='c' class='name'>Cane</p>
<p id='d' class='name'>Dan</p>
<p id='e' class='name'>Ed</p>
<p id='f' class='name'>Fred</p>
<p id='g' class='name'>Gene</p>

<p id='output-1'></p>
<p id='output-2'></p>

票数 0
EN

Stack Overflow用户

发布于 2018-11-19 03:42:06

您需要将变量声明移出while条件,并使用括号覆盖默认操作符优先级(逻辑节拍分配):

代码语言:javascript
复制
var names= document.querySelectorAll('.name');

var text = new Array();
var strtext = '';
 
for (var i = 0; i < names.length; i++){
var arlength = text.length;
text[arlength] = '['+names[i].getAttribute('id')+']';
}
strtext = text.join(' and ');
document.querySelector('#output-1').innerHTML= strtext;

//Show all the regex matches
var string= strtext;
var pattern= /\[(.*?)\]/ig;
var output = "";
var match;
while ((match = pattern.exec(string)) !== null)
{
    output += match[1];
}
document.querySelector('#output-2').innerHTML = output;
代码语言:javascript
复制
<p id='a' class='name'>Adam</p>
<p id='b' class='name'>Bob</p>
<p id='c' class='name'>Cane</p>
<p id='d' class='name'>Dan</p>
<p id='e' class='name'>Ed</p>
<p id='f' class='name'>Fred</p>
<p id='g' class='name'>Gene</p>

<p id='output-1'></p>
<p id='output-2'></p>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53367987

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档