Ich habe ein altes Skript zum Ändern der Schriftgröße einer Website durch Hinzufügen eines Klassennamens zum body-Tag, und ein Teil seiner Funktionalität besteht darin, die vorhandene Klasse zu entfernen, bevor Sie sie zu einem anderen ändern die Einstellungen. Das Problem ist, dass es eine eval
Zeile gibt, die jede Instanz der Wörter "large", "medium" oder "small" aus anderen Klassen des Body-Tags entfernt, die als eindeutige Bezeichner der Seite fungieren und andere Skripte stören verwenden. Wie kann ich die Eval-Zeile im folgenden Code ändern, sodass sie nur ganzen Wörtern entspricht?JavaScript eval() -Syntax
/* 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;
}
... Warum gibt es 'eval' hier in erster Linie?!? 'oldClasses =/large | medium | small/ig' ist das gleiche, außer nicht böse. Wenn Sie den String anpassen müssen, 'alteKlassen = neue RegExp (['große', 'mittlere', 'kleine']. Join ('|'), 'ig')'. (Die Frage hier nicht beantworten, nur Ungläubigkeit ausdrücken.) – Amadan
_ "Wie kann ich die folgende Zeile ändern, so dass sie nur nach ganzen Wörtern sucht?" _ Die Frage ist nicht klar. Wo findet eine "Suche" statt? – guest271314
Ich kenne Eval nicht wirklich, deshalb kann ich Ihnen nicht sagen, warum es notwendig war. Ich gehe davon aus, dass der Zweck darin besteht, die Begriffe aufzulisten, nach denen das Skript in den dem body-Tag zugewiesenen Klassen sucht. – Tom