在从 jQuery 到 JS 的转换中,数组填充了字符串而不是数字
Posted
技术标签:
【中文标题】在从 jQuery 到 JS 的转换中,数组填充了字符串而不是数字【英文标题】:Array gets filled with strings instead of numbers on a conversion from jQuery to JS 【发布时间】:2021-09-10 16:35:04 【问题描述】:试图将一个小的 sn-p 从 jQuery 转换为 JS,我得到一个包含字符串的数组,而不是一个包含数字的数组。
更准确地说,我是通过用 JS 重写的脚本来实现的:
转换后的JS代码如下:
let pickEl = document.querySelectorAll('.someClass');
// console.log(pickEl);
pickEl.forEach(pickEl =>
let r = new RegExp('(' + term + ')', "ig");
if(pickEl.textContent.match(r))
// console.log(pickEl.innerhtml.match(r));
let matches = pickEl.textContent.match(r);
matches.forEach(function(i)
occurrences.push(i);
);
// wrap each found term in span with class found to highlight it
pickEl.innerHTML.replace(r, '<span class="found">$&</span>');
console.log(pickEl.textContent.replace(r, '<span class="found">$&</span>'));
);
在 jQuery 中代替这个:
jQuery 代码如下所示:
$('.some').each(function (i)
var r = new RegExp('(' + term + ')', "ig");
if ($(this).html().match(r))
var matches = $(this).html().match(r);
console.log(matches);
console.log('Var matches =' + ' ' + matches);
$.each(matches, function ()
occurences.push(i);
);
// wrap each found search term with our `found` span to highlight it
$(this).html($(this).html().replace(r, '<span class="found">$1</span>'));
);
我应该如何编写JS代码以获得与jQuery相同的数组?
【问题讨论】:
【参考方案1】:这是因为 i
实际上在您的两个代码中:在本机 JS 版本中,i
指的是 String.prototype.match
返回的条目,而您的 jQuery 版本中的 i
来自 @987654322 @,即索引。
如果要访问索引,则需要从应用于pickEl
的外部forEach 函数中获取它。参考带有// NOTE:
的 cmets,我在其中添加了我的注释:
let pickEl = document.querySelectorAll('.someClass');
// NOTE: Access the index of the current element
pickEl.forEach((pickEl, index) =>
let r = new RegExp('(' + term + ')', "ig");
if(pickEl.textContent.match(r))
// console.log(pickEl.innerHTML.match(r));
let matches = pickEl.textContent.match(r);
matches.forEach(function()
// NOTE: Push the index into array
occurrences.push(index);
);
// wrap each found term in span with class found to highlight it
pickEl.innerHTML.replace(r, '<span class="found">$&</span>');
console.log(pickEl.textContent.replace(r, '<span class="found">$&</span>'));
);
【讨论】:
以上是关于在从 jQuery 到 JS 的转换中,数组填充了字符串而不是数字的主要内容,如果未能解决你的问题,请参考以下文章
使用 javascript 和 jquery,用数组结构填充相关的选择框