任何一种简单的方法都可以将带有onload的元素作为目标
Any easy way to target an element with onload within that onload?
假设您想用JS使元素变蓝,如下所示:
<p onload="this.style.color = 'blue'">Boy, I sure do wish I was blue</p>
上面的行不起作用,因为this
针对的是该上下文中的窗口对象。你可以使用身份证,但我想还有更好的方法。
那么,就像标题所说的那样,有没有什么简单的方法可以在onload中针对带有onload的元素?请注意,当页面中有多个具有onload
属性的元素时,这样的解决方案必须有效。
您必须使用JavaScript。
您可能希望排除window
和iframe
元素,但这应该让您开始。
// Get the list of elements with an `onload` attribute
var list = document.querySelectorAll("[onload]");
// Loop through those elements
for(var i = 0; i < list.length; i++) {
var el = list[i];
// Get the value of `onload`
var v = el.getAttribute("onload");
console.log(v);
// Once you have `v` you need to call it... with something like:
var func = new Function(v);
func.call(v); // This should set `this` properly.
}
不幸的是,onload属性只会加载在body
或iframe
元素上,而不会加载在任意元素上。
我建议您将"this"发送到一个函数,然后该函数将对元素执行您想要的操作。
function change(e){ e.style.color = 'blue'; }
<p onload="change(this);">Boy, I sure do wish I was blue</p>
虽然不是完美的答案或解决方案,但它对我来说效果很好。注意,我不知道这是否适用于所有浏览器。
相关文章:
- 任何一种简单的方法都可以将带有onload的元素作为目标
- 输出表示img元素不存在(为null),但脚本在img的实现下面,并使用了onload()
- 复选框启用 Onload 以显示其他元素
- 如何将要附加图像的元素传递到image.onload()函数中
- 将jQuery插件分配给加载的html元素,而不是在window.onload上
- 观察事件'Window Onload'在刷新的DIV元素内
- Firefox在元素已加载后执行onload
- 动态数据填充元素后的onload事件
- 所有元素都可以具有onload属性
- 获取angular的onload事件.iframe元素
- 文档.没有图像或其他元素的onload(只有HTML)
- HTML表单元素隐藏的onload javascript
- JavaScript -覆盖html元素的.onload原型
- 如何在AngularJS ng-include中获取调用onload的元素
- onLoad不适用于元素
- 本机 DOM 元素的 Angular 2 onload 事件
- 是 Angular1.x 指令编译阶段的元素.ready 相当于 JavaScript 的 onload for a e
- 专注于 iFrame onLoad 中的元素
- 在文本区域元素上使用onload
- 如何在jQuery页面的onload中隐藏元素