假设您想使用JS将元素变为蓝色,代码如下:
<p onload="this.style.color = 'blue'">Boy, I sure do wish I was blue</p>
上述代码行不起作用,因为在该上下文中
this
指向窗口对象。您可以使用ID,但我认为还有更好的方法。因此,正如标题所说,是否有一种简单的方法可以在onload中定位一个元素,在该onload中?请注意,这样的解决方案必须在页面中有多个具有
onload
属性的元素时起作用。假设您想使用JS将元素变为蓝色,代码如下:
<p onload="this.style.color = 'blue'">Boy, I sure do wish I was blue</p>
this
指向窗口对象。您可以使用ID,但我认为还有更好的方法。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
元素上加载,而不能在任意元素上加载。
function change(e){ e.style.color = 'blue'; }
<p onload="change(this);">Boy, I sure do wish I was blue</p>
虽然这不是完美的答案或解决方案,但它对我非常有效。请注意,我不知道这是否适用于每个浏览器。
onload
只对body
标签有意义。但是您可以通过编写更多的代码使其工作。 - dfsq