如何在onload事件中定位另一个含有onload事件的元素?

5

假设您想使用JS将元素变为蓝色,代码如下:

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

上述代码行不起作用,因为在该上下文中this指向窗口对象。您可以使用ID,但我认为还有更好的方法。
因此,正如标题所说,是否有一种简单的方法可以在onload中定位一个元素,在该onload中?请注意,这样的解决方案必须在页面中有多个具有onload属性的元素时起作用。

onload 只对 body 标签有意义。但是您可以通过编写更多的代码使其工作。 - dfsq
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.
}

0

不幸的是,onload 属性只能在 bodyiframe 元素上加载,而不能在任意元素上加载。


0
我建议您将“这个”发送到一个函数,该函数将执行您想要的操作。
function change(e){ e.style.color = 'blue'; }

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

虽然这不是完美的答案或解决方案,但它对我非常有效。请注意,我不知道这是否适用于每个浏览器。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接