我有一个旧脚本,用于通过向body标签添加类名来更改网站的字体大小,其部分功能是在将其更改为其中一个之前移除现有类设置。问题是存在一个eval
行,它会从body标签上的其他类中删除“large”,“medium”或“small”等任何实例,这些实例充当页面的唯一标识符,这会干扰其他脚本使用。如何在下面的代码中更改eval行,以便它只匹配整个单词?JavaScript eval()语法
/* Override CSS with global font size selected by user */
function changeFontSize(size) {
var oldClasses, currentClass;
/*sets key words to be eliminated*/
oldClasses = eval("/large|medium|small/ig");
/*gets the current class names*/
currentClass = document.body.className;
/*eliminates key words from string, then adds new size*/
document.body.className = currentClass.replace(oldClasses, "") + " " + size;
}
...为什么会出现在这里'在eval'第一名?!? 'oldClasses =/large | medium | small/ig'是相同的,除非不是邪恶。如果你需要自定义字符串,'oldClasses = new RegExp(['large','medium','small']。join('|'),'ig')'。 (这里没有回答这个问题,只是表示怀疑。) – Amadan
_“我怎样才能改变下面的行,以便它只搜索整个单词?”_问题不清楚。 “搜索”在哪里发生? – guest271314
我对eval不太了解,所以我不能告诉你为什么这是必要的。我从上下文中假定它的目的是列出脚本在分配给body标签的类中查找的术语。 – Tom