タイトルはあまり適応していないと思いますが、それ以外に何を付ければよいかわかりません。必要に応じて編集します。
私が欲しいのは非常に奇妙ですが、反対票を投じないでください。そのように呼び出される独自の関数を作成したい:<input type="text" onMyFunction="alert('hi');" />
無理なら言っていただければベストアンサーにさせていただきます。
PS: 機能する場合、関数は永続的に呼び出され、この関数内if
で先頭に a を配置します。
タイトルはあまり適応していないと思いますが、それ以外に何を付ければよいかわかりません。必要に応じて編集します。
私が欲しいのは非常に奇妙ですが、反対票を投じないでください。そのように呼び出される独自の関数を作成したい:<input type="text" onMyFunction="alert('hi');" />
無理なら言っていただければベストアンサーにさせていただきます。
PS: 機能する場合、関数は永続的に呼び出され、この関数内if
で先頭に a を配置します。
純粋な JavaScript を使用してこれを行うことができますが、jQuery の方が簡単です。
<input id="someId" type="text" />
$('#someId').bind('myCustomEvent', function(event) {
alert('hi');
});
そして、コードの他の場所でそれをトリガーするには:
$("#someId").trigger('myCustomEvent');
私がこれを正しく理解していれば、JavaScript関数が呼び出されたときに何かを起こさせたいと思っています。実際の機能で起こりたいことを入れてみませんか?
<script type="javascript/text">
function MyFunction(){
// some code
alert('hi');
</script>
永久に呼び出されるとはどういう意味かわかりませんが、上記のコードでは、質問で説明したのと同様に、関数が呼び出されるたびに hi を表示するアラートが発生しますが、別の実装を使用しています。
onMyFunction="alert('hi')" を実際に使用する限り、onClick、onload、および onmouseover イベントが組み込まれているため、これが可能であるとは思えません。したがって、onMyFunction を正しく実装する追加のコードを記述しない限り、私はそれを行う方法が表示されません。
あなたが抱えている問題は、ブラウザがそこにある機能であることを認識していないことです. これは文字列です。これを関数にする唯一の方法は、関数として割り当てることです。
1 つの方法は、ドキュメントの準備ができているかオンロードのいずれかです。属性を持つ要素についてドキュメントをクエリし、それを再割り当てします。
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を使用しています。