Javascript 多个函数onClick()不工作
下面是我在一个按钮上用于多个java脚本的代码。但是当我禁用第二个时,只有一个可以工作。请让我知道:如何更改代码以使其正常工作Javascript 多个函数onClick()不工作,javascript,Javascript,下面是我在一个按钮上用于多个java脚本的代码。但是当我禁用第二个时,只有一个可以工作。请让我知道:如何更改代码以使其正常工作 function invoke(but) { if(but==0) { function move(){ document.getElementById('tgt1').value = document.getElementById('Allocation').value;
function invoke(but)
{
if(but==0)
{
function move(){
document.getElementById('tgt1').value =
document.getElementById('Allocation').value;
document.getElementById('Allocation').value="";
document.getElementById("Send").disabled=true;
}document.myform.action="Alloc_Insert.do";
}
else if(but==1)
{
document.myform.action="";
}
else if(but==2){ document.myform.action="WL_Verif.do";}
else if(but==3){ document.myform.action="Add_Query.do";}
document.myform.submit();
}
html格式如下所示:
<input type="Submit" value="Allocate" id="Send" name="submit" onClick="invoke(0);move();"/><br/>
请注意,“move”函数不是在“invoke”函数之外声明的 然后, 将它们包装在自调用函数中:
onclick="(function(){ invoke(0);move(); })();"
或附加事件处理程序
div.attachEventListener('click', function () { ... }); // DOM 3
div.attachEvent('click', function () { ... }); // IE
请注意,“move”函数不是在“invoke”函数之外声明的 然后, 将它们包装在自调用函数中:
onclick="(function(){ invoke(0);move(); })();"
或附加事件处理程序
div.attachEventListener('click', function () { ... }); // DOM 3
div.attachEvent('click', function () { ... }); // IE
您的函数以一种奇怪的方式声明。您在invoke内部定义了move,我认为您不希望这样。如果希望有两个函数,请将move置于invoke之外,如下所示:
function move(){
document.getElementById('tgt1').value =
document.getElementById('Allocation').value;
document.getElementById('Allocation').value="";
document.getElementById("Send").disabled=true;
}
function invoke(but)
{
if(but==0)
{
move();
document.myform.action="Alloc_Insert.do";
}
else if(but==1)
{
document.myform.action="";
}
else if(but==2){ document.myform.action="WL_Verif.do";}
else if(but==3){ document.myform.action="Add_Query.do";}
document.myform.submit();
}
注意:在HTML中使用onClick通常不是一个好主意-最好将它放在JavaScript中。您的函数以一种奇怪的方式声明。您在invoke内部定义了move,我认为您不希望这样。如果希望有两个函数,请将move置于invoke之外,如下所示:
function move(){
document.getElementById('tgt1').value =
document.getElementById('Allocation').value;
document.getElementById('Allocation').value="";
document.getElementById("Send").disabled=true;
}
function invoke(but)
{
if(but==0)
{
move();
document.myform.action="Alloc_Insert.do";
}
else if(but==1)
{
document.myform.action="";
}
else if(but==2){ document.myform.action="WL_Verif.do";}
else if(but==3){ document.myform.action="Add_Query.do";}
document.myform.submit();
}
注意:在HTML中使用onClick通常不是一个好主意-最好将它放在JavaScript中。将按钮的名称更改为submit以外的名称 要解释发生了什么: 当您将name属性submit分配给button或任何其他表单元素时,可以通过
document.myform.submit
但是还有表单的内置方法:submit,您也可以使用
document.myform.submit
现在调用document.myform.submit时会发生什么
我将编写稍微不同的代码,您将看到问题:
document.myform['submit']()
代码不访问内置方法,而是首先指向表单元素,然后尝试执行该方法。但是表单元素不是方法,它最终都会出错,脚本的其余部分(包括move调用)将不会执行
重置也是一样,您永远不应该使用表单元素的内置属性/方法的名称作为表单元素的名称 将按钮名称更改为submit以外的名称 要解释发生了什么: 当您将name属性submit分配给button或任何其他表单元素时,可以通过
document.myform.submit
但是还有表单的内置方法:submit,您也可以使用
document.myform.submit
现在调用document.myform.submit时会发生什么
我将编写稍微不同的代码,您将看到问题:
document.myform['submit']()
代码不访问内置方法,而是首先指向表单元素,然后尝试执行该方法。但是表单元素不是方法,它最终都会出错,脚本的其余部分(包括move调用)将不会执行
重置也是一样,您永远不应该使用表单元素的内置属性/方法的名称作为表单元素的名称 我认为问题在于move函数的范围。尝试在调用之外定义移动
function invoke (but) {
if(but==0) {
document.myform.action="Alloc_Insert.do";
// I don't know if you meant to call move() here or not
}
else if (but==2) { document.myform.action="WL_Verif.do"; }
else if (but==3) { document.myform.action="Add_Query.do"; }
document.myform.submit();
}
function move(){
document.getElementById('tgt1').value =
document.getElementById('Allocation').value;
document.getElementById('Allocation').value="";
document.getElementById("Send").disabled=true;
}
此外,正确地格式化代码将对代码的易读性产生奇迹般的影响
注意:Firefox似乎很乐意执行onClick=invoke0;移动即使移动是在调用中定义的。然而,Chrome不会执行move,因为它找不到它。因此,一定要在多个浏览器中测试脚本。我认为问题在于move函数的范围。尝试在调用之外定义移动
function invoke (but) {
if(but==0) {
document.myform.action="Alloc_Insert.do";
// I don't know if you meant to call move() here or not
}
else if (but==2) { document.myform.action="WL_Verif.do"; }
else if (but==3) { document.myform.action="Add_Query.do"; }
document.myform.submit();
}
function move(){
document.getElementById('tgt1').value =
document.getElementById('Allocation').value;
document.getElementById('Allocation').value="";
document.getElementById("Send").disabled=true;
}
此外,正确地格式化代码将对代码的易读性产生奇迹般的影响
注意:Firefox似乎很乐意执行onClick=invoke0;移动即使移动是在调用中定义的。然而,Chrome不会执行move,因为它找不到它。因此,一定要在多个浏览器中测试您的脚本。嗨,伙计,谢谢您的回复,这里只有一个函数在工作,即调用,但移动不起作用。嗨,伙计,谢谢您的回复,这里只有一个功能正在工作,即调用但移动不起作用。将按钮的名称更改为submit以外的其他名称将按钮的名称更改为submit以外的其他名称。感谢所有的朋友给我一些解决方案。将按钮的名称更改为“提交”以外的其他名称将按钮的名称更改为“提交”以外的其他名称。谢谢你们所有的朋友给我一些解决方案。