我认为标题不是很适应,但我不知道该怎么做。如果你愿意,可以编辑它。
我想要的是非常奇怪,但请不要贬低。我想创建自己的函数,将被调用:<input type="text" onMyFunction="alert('hi');" />
如果不可能,请告诉它,我将其视为最佳答案。
P.S:如果它有效,该函数将永久调用,在这个函数中我会在开头放一个if
。
答案 0 :(得分:2)
您可以使用纯JavaScript执行此操作,但jQuery更简单:
<input id="someId" type="text" />
$('#someId').bind('myCustomEvent', function(event) {
alert('hi');
});
并在代码的其他位置触发它:
$("#someId").trigger('myCustomEvent');
答案 1 :(得分:1)
如果我理解这一点,那么当你的javascript函数被调用时,你想要发生一些事情。为什么不把你想要发生的事情放在你的实际功能中呢?
<script type="javascript/text">
function MyFunction(){
// some code
alert('hi');
</script>
我不确定永久调用你的意思,但是在上面的代码中,每次调用函数时都会出现一个显示hi的警报,类似于你在问题中描述的,但是使用了不同的实现。 / p>
至于实际使用onMyFunction =“alert('hi')”,我不相信这是可能的,因为onClick,onload和onmouseover事件都是内置的。所以除非你编写额外的代码来正确实现onMyFunction ,我没有办法做到这一点。
答案 2 :(得分:1)
你遇到的问题是浏览器没有意识到它是一个功能。它是一个字符串,使它成为一个函数的唯一方法是将它指定为函数。
一种方法是在文档就绪或onload上,您在文档中查询具有该属性的元素并重新分配它。
<强> HTML 强>
<input id="foo1" type="text" onMyFunction="alert(this.value);" value="1"/>
<input id="foo2" type="text" onMyFunction="alert(this.value);" value="2"/>
<强>的JavaScript 强>
var winLoad = window.onload;
window.onload = function(){
var i,
elem,
fncStr,
elems = document.querySelectorAll("[onMyFunction]");
if (winLoad) {
winLoad();
}
for (i=0;i<elems.length;i++) {
elem = elems[i];
fncStr = elem.getAttribute("onMyFunction");
elem.onMyFunction = new Function(fncStr);
}
var tb1 = document.getElementById("foo1");
tb1.onMyFunction();
}
此代码使用querySelectorAll,并非所有浏览器都支持。