当一个输入元素或其他HTML元素被渲染时,是否有可能触发JavaScript脚本?该脚本应该从HTML标签内部触发,以便我们可以将“this”传递给JS函数。
当一个输入元素或其他HTML元素被渲染时,是否有可能触发JavaScript脚本?该脚本应该从HTML标签内部触发,以便我们可以将“this”传递给JS函数。
一种模拟这种事件的方法是创建一个自定义的data-*属性(符合HTML-5标准),并将其用作选择器。接着,在主要的JavaScript代码中,您可以添加一个选择器,用于选择具有特定data-XXX属性的任何东西,并在其中评估JavaScript代码。
示例HTML代码:
<div data-onload="sampleFunction('param1', 2)"></div>
示例 JavaScript 代码(使用 jQuery)。也可以使用普通 DOM 查找具有此属性的元素。
/* Find any element which has a 'data-onload' function and load that to simulate an onload. */
$('[data-onload]').each(function(){
eval($(this).data('onload'));
});
这个很不错,我实际上在生产中使用它。
不会。然而,放置在输入元素标记之后的任何脚本都将在解析脚本之前使用输入元素,因此可以使用它。所以,如果所有这些都位于中:
<input id="a">
<script>document.getElementById('a');</script>
a
的元素。Imdad,你可以使用其他选择元素的方法,比如标签选择,甚至是类选择。 - Delan Azabani我有一个输入元素被动态添加到文档中,需要进行初始化。
以下是一种初始化小部件的方法,虽然不够完美,但可以在第一次使用输入时实现:
<input onfocus="initwidget(this)">
有一个技巧。对于具有type="image" src="..."
属性的输入,存在onload
和onerror
事件。您可以通过将src
传递为空或始终错误并在触发onerror
事件时更改类型为正确的类型来使用onerror
:
function func(input) {
console.log("Input loaded");
input.type = "text";
input.value = "Worked!";
input.removeAttribute("src");
// ...
}
<input type="image" value="" onerror="func(this)" src=""/>
不,这是不可能的。但是你可以使用jQuery + $(document).ready(function)在页面加载完成后立即修改任何输入字段。
data-onload
传递参数,像这样 http://codepen.io/kevingimbel/pen/0c9366e17a96288ee8a685d6d53a805f。 - Kevin G.