比较使用javascript的两个html按钮的onclick动作

问题描述

|| 我有两个HTML表单按钮,每个按钮都具有一个onclick动作。
<input type=button name=sel value=\"Select all\" onclick=\"alert(\'Error!\');\">
<input type=button  name=desel value=\"Deselect all\" onclick=\"alert(\'Error!\');\">
不幸的是,此操作有时会更改。有可能
onclick=\"\";>
要么
onclick=\"alert(\'Error!\');\"
要么
onclick=\"checkAll(\'stato_nave\');\"  
我正在尝试编写一些JavaScript代码,以验证所调用的函数是什么,并在需要时进行更改:
var button=document.getElementsByName(\'sel\')[0];
// I don\'t want to change it when it is empty or calls the \'checkAll\' function
if( button.getAttribute(\"onclick\") != \"checkAll(\'stato_nave\');\" &&
    button.getAttribute(\"onclick\") != \"\"){
    //modify button
    document.getElementsByName(\'sel\')[0].setAttribute(\"onclick\",\"set(1)\");
    document.getElementsByName(\'desel\')[0].setAttribute(\"onclick\",\"set(0)\");
} //set(1) and set(0) being two irrelevant function
不幸的是,这些工作都没有。 回到一些步骤,我注意到
alert( document.getElementsByName(\'sel\')[0].onclick);
不会像我期望的那样输出onclick内容,但是输出:
function onclick(event) {
    alert(\"Error!\");
}
所以我想比较由于这个原因而失败,我不能比较
function
string
。 是否有人猜测如何区分与
onclick
属性相关的功能?     

解决方法

这有效 http://jsfiddle.net/mplungjan/HzvEh/
var button=document.getElementsByName(\'desel\')[0];
// I don\'t want to change it when it is empty or calls the \'checkAll\' function
var click = button.getAttribute(\"onclick\");
if (click.indexOf(\'error\') ) {

    document.getElementsByName(\'sel\')[0].onclick=function() {setIt(1)};
    document.getElementsByName(\'desel\')[0].onclick=function() {setIt(0)};

}

function setIt(num) { alert(num)}
但是,为什么不将onclick移至脚本
window.onload=function() {
  var button1 = document.getElementsByName(\'sel\')[0];
  var button2 = document.getElementsByName(\'desel\')[0];
  if (somereason && someotherreason) {
    button1.onclick=function() {
      sel(1);
    }
    button2.onclick=function() {
      sel(0);
    }
  }
  else if (somereason) {
    button1.onclick=function() {
      alert(\"Error\");
    }
  }
  else if (someotherreason) {
    button1.onclick=function() {
      checkAll(\'stato_nave\')
    }
  }
}
    ,尝试将
onclick
属性强制转换为
string
。然后,您至少可以检查ѭ​​14ѭ的索引以及它是否为空。之后,您可以轻松地将那些
input
元素绑定到新的
onclick
函数。
var sel = document.getElementsByName(\'sel\')[0];
var desel = document.getElementsByName(\'desel\')[0];

var onclick = sel.getAttribute(\"onclick\").toString();

if (onclick.indexOf(\"checkAll\") == -1 && onclick != \"\") {
    sel.onclick = function() { set(1) };
    desel.onclick = function() { set(0) };
}

function set(number)
{
    alert(\"worked! : \" + number);
}
工作示例:http://jsfiddle.net/fAJ6v/1/ example14方法时的工作示例:http://jsfiddle.net/fAJ6v/3/     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...