diff --git a/src/main/java/org/htmlunit/javascript/host/dom/DOMTokenList.java b/src/main/java/org/htmlunit/javascript/host/dom/DOMTokenList.java
index d8037cf2cc..32579eece0 100644
--- a/src/main/java/org/htmlunit/javascript/host/dom/DOMTokenList.java
+++ b/src/main/java/org/htmlunit/javascript/host/dom/DOMTokenList.java
@@ -18,10 +18,14 @@
import java.util.HashSet;
import org.apache.commons.lang3.StringUtils;
+import org.htmlunit.WebClient;
+import org.htmlunit.corejs.javascript.ContextAction;
+import org.htmlunit.corejs.javascript.Function;
import org.htmlunit.corejs.javascript.Scriptable;
import org.htmlunit.html.DomAttr;
import org.htmlunit.html.DomElement;
import org.htmlunit.html.DomNode;
+import org.htmlunit.javascript.HtmlUnitContextFactory;
import org.htmlunit.javascript.HtmlUnitScriptable;
import org.htmlunit.javascript.JavaScriptEngine;
import org.htmlunit.javascript.configuration.JsxClass;
@@ -262,6 +266,32 @@ public Object item(final int index) {
return null;
}
+ /**
+ * Calls the {@code callback} given in parameter once for each value in the list.
+ * @param callback function to execute for each element
+ */
+ @JsxFunction
+ public void forEach(final Object callback) {
+ final String value = getAttribValue();
+ if (StringUtils.isEmpty(value)) {
+ return;
+ }
+
+ final WebClient client = getWindow().getWebWindow().getWebClient();
+ final HtmlUnitContextFactory cf = client.getJavaScriptEngine().getContextFactory();
+
+ final ContextAction