ヘッダーに追加したJS関数を呼び出そうとしています。私の問題のシナリオを示す以下のコードを見つけてください。注:アプリケーションの本文にアクセスできません。 id="Save"
でエレメントをクリックするたびに、f1()
のみが呼び出され、fun()
は呼び出されません。 fun()
でも呼び出すことができますか?助けてください。
<!DOCTYPE html>
<html>
<head>
<script>
document.getElementById("Save").onclick = function fun()
{
alert("hello");
//validation code to see State field is mandatory.
}
function f1()
{
alert("f1 called");
//form validation that recalls the page showing with supplied inputs.
}
</script>
</head>
<body>
<form name="form1" id="form1" method="post">
State:
<select id="state ID">
<option></option>
<option value="ap">ap</option>
<option value="bp">bp</option>
</select>
</form>
<table><tr><td id="Save" onclick="f1()">click</td></tr></table>
</body>
</html>
要素がロードされる前に、イベントリスナー関数をアタッチしようとしています。 onload
イベントリスナー関数内にfun()
を配置します。 onclick
属性は無視されるため、この関数内でf1()
を呼び出します。
function f1() {
alert("f1 called");
//form validation that recalls the page showing with supplied inputs.
}
window.onload = function() {
document.getElementById("Save").onclick = function fun() {
alert("hello");
f1();
//validation code to see State field is mandatory.
}
}
AddEventListenerを使用して、必要な数のリスナーを追加できます。
document.getElementById("Save").addEventListener('click',function ()
{
alert("hello");
//validation code to see State field is mandatory.
} );
また、要素の後にscript
タグを追加して、スクリプトの実行時にSave
要素がロードされるようにします
スクリプトタグを移動するのではなく、domが読み込まれたときに呼び出すことができます。次に、コードを内部に配置する必要があります
document.addEventListener('DOMContentLoaded', function() {
document.getElementById("Save").addEventListener('click',function ()
{
alert("hello");
//validation code to see State field is mandatory.
} );
});
document.getElementById("Save").onclick =
は関数の前に削除しました。これは、ボタンで既に呼び出されているイベントだからです。また、onclickイベントによって2つの関数を個別に呼び出す必要がありました。
<!DOCTYPE html>
<html>
<head>
<script>
function fun()
{
alert("hello");
//validation code to see State field is mandatory.
}
function f1()
{
alert("f1 called");
//form validation that recalls the page showing with supplied inputs.
}
</script>
</head>
<body>
<form name="form1" id="form1" method="post">
State:
<select id="state ID">
<option></option>
<option value="ap">ap</option>
<option value="bp">bp</option>
</select>
</form>
<table><tr><td id="Save" onclick="f1(); fun();">click</td></tr></table>
</body>
</html>
Onclick属性を使用するか、JS onclickプロパティに関数を適用すると、のonclick初期化が消去されます。
必要なことは、追加ボタンのイベントをクリックすることです。そのためには、addEventListenerおよびattachEvent(ie)メソッドが必要です。
<!DOCTYPE html>
<html>
<head>
<script>
function addEvent(obj, event, func) {
if (obj.addEventListener) {
obj.addEventListener(event, func, false);
return true;
} else if (obj.attachEvent) {
obj.attachEvent('on' + event, func);
} else {
var f = obj['on' + event];
obj['on' + event] = typeof f === 'function' ? function() {
f();
func();
} : func
}
}
function f1()
{
alert("f1 called");
//form validation that recalls the page showing with supplied inputs.
}
</script>
</head>
<body>
<form name="form1" id="form1" method="post">
State: <select id="state ID">
<option></option>
<option value="ap">ap</option>
<option value="bp">bp</option>
</select>
</form>
<table><tr><td id="Save" onclick="f1()">click</td></tr></table>
<script>
addEvent(document.getElementById('Save'), 'click', function() {
alert('hello');
});
</script>
</body>
</html>
インラインコードは他のコードよりも優先されます。他の関数func()を呼び出すには、f1()から呼び出します。
関数内に行を追加し、
function fun () {
// Your code here
}
function f1()
{
alert("f1 called");
//form validation that recalls the page showing with supplied inputs.
fun ();
}
コード全体を書き直し、
<!DOCTYPE html>
<html>
<head>
<script>
function fun()
{
alert("hello");
//validation code to see State field is mandatory.
}
function f1()
{
alert("f1 called");
//form validation that recalls the page showing with supplied inputs.
fun ();
}
</script>
</head>
<body>
<form name="form1" id="form1" method="post">
State: <select id="state ID">
<option></option>
<option value="ap">ap</option>
<option value="bp">bp</option>
</select>
</form>
<table><tr><td id="Save" onclick="f1()">click</td></tr></table>
</body>
</html>