我和我的朋友正在试图解决这个问题,但是我们找不出答案,我们找到了一些针对这个错误提供解决方案的帖子,但是我们不知道如何将它应用到我们的情况中,所以基本上,代码应该返回所有的regex匹配,这是指
document.querySelector('#output-2').innerHTML=输出;
我们希望看到从a到输出的id =值,但是控制台说:
Uncaught SyntaxError: Unexpected token var这个错误指的是这一行
while (var match = pattern.exec(string) !== null) 那我为什么要犯这个错误呢?
这是我的密码
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;<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>
发布于 2018-11-19 03:42:47
var表示新变量的初始化,这种初始化只允许作为独立语句进行--变量初始化不能被解析为表达式,而while(的内部只能接受表达式(计算值为值的内容)。(与表达式相反,语句执行一些操作,如初始化值或执行if / then块)
在match条件之外初始化while。
还需要在match = pattern.exec(string)表达式周围加上括号,以便正确地将其与null进行比较,否则将将pattern.exec(string) !== null (即布尔值)的结果分配给output,这不是您想要的结果:
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;<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>
发布于 2018-11-19 03:42:06
您需要将变量声明移出while条件,并使用括号覆盖默认操作符优先级(逻辑节拍分配):
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;<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>
https://stackoverflow.com/questions/53367987
复制相似问题