我试图调用我在标题中添加的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>
答案 0 :(得分:31)
您正在尝试在加载元素之前附加事件侦听器函数。将fun()
放在onload
事件侦听器函数中。在此函数中调用f1()
,因为onclick
属性将被忽略。
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.
}
}
答案 1 :(得分:8)
您可以使用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.
} );
});
答案 2 :(得分:2)
我在您的功能之前删除了[55.9652951064934, 18560.7401898885]
,因为它已经在您的按钮上调用了一个事件。我还必须通过onclick事件单独调用这两个函数。
document.getElementById("Save").onclick =
答案 3 :(得分:1)
内联代码优先于其他代码。要调用你的其他函数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>
答案 4 :(得分:1)
使用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>
答案 5 :(得分:0)
您也可以通过使用 iife 的匿名 JavaScript 函数来执行此操作。 请注意,这被认为是一种不好的做法,尽管在极少数情况下别无选择。
...
<span onclick="(function() { // function code here })())">click me!</span>
...