在onload中使用onload定位元素的任何简单方法?

时间:2016-05-15 18:43:40

标签: javascript html onload targeting

假设您想用JS创建一个蓝色元素,如下所示:

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

上述行不起作用,因为this以该上下文中的窗口对象为目标。您可以使用ID,但我认为这是一种更好的方式。

所以,就像标题所说的那样,是否有任何简单的方法可以在onload中使用onload来定位元素?请注意,当页面中有多个具有onload属性的元素时,此类解决方案必须正常工作。

3 个答案:

答案 0 :(得分: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.
}

答案 1 :(得分:0)

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

答案 2 :(得分:0)

我建议你发送&#34;这个&#34;到一个函数,然后用元素做你想做的事。

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

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

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