有没有办法可以在HTML中传递参数值“this”,其中“this”指的是它加载的对象。例如:
<div onload="floatIn(this)">
<p>test</p>
</div>
function= floatIn(element){//}
哪里元素应该是div?
答案 0 :(得分:0)
this
变量唯一特别之处在于它是如何定义的。
在调用函数时,可以像传递其他变量一样传递其值。
您的问题是,div
元素没有load
事件,因为它不会加载任何内容,因此您的事件处理程序永远不会触发(并且您的HTML是无效的)。
答案 1 :(得分:0)
“onload”事件是指需要获取其内容的元素,例如图片;因此,div
元素不会触发事件。
如果要在div渲染后触发脚本,则必须在HTML中提及div
之后运行:
<script>
function floatIn(div) {
console.log(div);
}
</script>
<div id="mydiv">
<p>test</p>
</div>
<script>
var div = document.getElementById('mydiv');
floatIn(div);
</script>
但是如果div中有图像,则在渲染div之后但在图像加载之前会触发以这种方式定义的回调。要处理这种情况,您必须收听图片“加载”事件(例如,请参阅this jQuery library)。
更新:如果您想要并有权附加脚本,则可以创建自己的回调属性:
<div id="div1" onrender="this.textContent = this.id"></div>
<div id="div2" onrender="this.textContent = this.id"></div>
<!-- ...and the end of the document -->
<script>
document.querySelectorAll('[onrender]').forEach(function (elem) {
var func = new Function(elem.getAttribute('onrender'));
func.call(elem);
});
</script>