Javascript 有没有简单的方法可以将onload放在onload中的元素作为目标?
假设您想用JS将一个元素变成蓝色,如下所示:Javascript 有没有简单的方法可以将onload放在onload中的元素作为目标?,javascript,html,onload,targeting,Javascript,Html,Onload,Targeting,假设您想用JS将一个元素变成蓝色,如下所示: <p onload="this.style.color = 'blue'">Boy, I sure do wish I was blue</p> 男孩,我真希望我是蓝色的 上面的行不起作用,因为此以该上下文中的窗口对象为目标。你可以用身份证,但我想有更好的办法 那么,正如标题所说,有没有简单的方法可以将onload元素作为onload元素的目标?请注意,当页面中有多个具有onload属性的元素时,这种解决方案必须起作用。不
<p onload="this.style.color = 'blue'">Boy, I sure do wish I was blue</p>
男孩,我真希望我是蓝色的
上面的行不起作用,因为此
以该上下文中的窗口对象为目标。你可以用身份证,但我想有更好的办法
那么,正如标题所说,有没有简单的方法可以将onload元素作为onload元素的目标?请注意,当页面中有多个具有
onload
属性的元素时,这种解决方案必须起作用。不幸的是,onload属性将只加载到body
或iframe
元素上,而不会加载到任意元素上 您必须使用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”属性的元素列表
var list=document.queryselectoral(“[onload]”);
//循环遍历这些元素
对于(变量i=0;i
我建议您将“this”发送到一个函数,然后该函数将对元素执行您想要的操作
function change(e){ e.style.color = 'blue'; }
<p onload="change(this);">Boy, I sure do wish I was blue</p>
函数更改(e){e.style.color='blue';}
孩子,我真希望我是蓝色的
虽然不是完美的答案或解决方案,但对我来说效果很好。请注意,我不知道这是否适用于所有浏览器。
onload
仅适用于body
标记。但您可以使用更多的代码使其工作。