5

假设你想用 JS 把一个元素变成蓝色,像这样:

<p onload="this.style.color = 'blue'">Boy, I sure do wish I was blue</p>

上面的行不起作用,因为this该上下文中的目标是 window 对象。您可以使用 ID,但我认为有更好的方法。

那么,就像标题所说的那样,有没有简单的方法可以在该 onload 中定位一个带有 onload 的元素?onload请注意,当页面中有多个具有该属性的元素时,这种解决方案必须有效。

4

3 回答 3

1

您必须使用 JavaScript 来完成。

您可能想要排除windowiframe元素,但这应该可以帮助您入门。

// 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.
}
于 2016-05-15T19:23:33.983 回答
0

我建议您将“this”发送到一个函数,然后它将对元素执行您想要的操作。

function change(e){ e.style.color = 'blue'; }

<p onload="change(this);">Boy, I sure do wish I was blue</p>

虽然不是完美的答案或解决方案,但对我来说效果很好。请注意,我不知道这是否适用于每个浏览器。

于 2017-09-12T14:02:39.840 回答
0

不幸的是,onload 属性只会加载到bodyoriframe元素上,而不是任意元素上。

于 2016-05-15T18:50:14.033 回答