Tampermonkey JS为类名m-date-entry__day-field设置attribute失败问题求助
执行失败的原因
- 方法名拼写错误:正确的DOM API是
document.getElementsByClassName(),Element后需加复数后缀s,你使用的getElementByClassName是不存在的方法,调用会直接抛出异常。 - 返回值类型不匹配:
getElementsByClassName返回的是类数组结构的HTMLCollection集合(因为同一个类名可以绑定到多个元素上),并非单个DOM元素,直接对集合调用setAttribute方法会报错,必须先选中集合内的目标元素再操作。
解决方法
方法1:修正原有写法
如果页面内只有1个类名为m-date-entry__day-field的元素,补全方法名并指定集合的第一个元素索引即可:
// 方式1:通过setAttribute设置value属性 document.getElementsByClassName("m-date-entry__day-field")[0].setAttribute("value", "1"); // 方式2:直接修改input的value属性(更推荐,实时生效,不受用户交互影响) document.getElementsByClassName("m-date-entry__day-field")[0].value = "1";
如果页面有多个同类名元素,调整索引[0]为你需要的目标元素对应序号即可。
方法2:使用querySelector简化操作
querySelector会直接返回匹配选择器的第一个元素,不需要手动处理集合,写法更简洁:
// 同样两种赋值方式二选一 document.querySelector(".m-date-entry__day-field").setAttribute("value", "1"); document.querySelector(".m-date-entry__day-field").value = "1";
内容的提问来源于stack exchange,提问作者danieildefos
相关产品推荐
相关产品推荐

