通过Javascript修改onClick属性

通过Javascript修改onClick属性,javascript,html,dom,Javascript,Html,Dom,我想向已经呈现的按钮代码添加更多功能。 唯一的方法是Javascript,因为它以前是从服务器渲染的,我只能访问JSP 这是我现在拥有的,但它不起作用,它只显示相同的消息两次。如果我单击该按钮,则不会显示警报“hello” <script type="text/javascript"> function addEventBefore(element, type, fn) { var old = element['on' + type] || function() {}; el

我想向已经呈现的按钮代码添加更多功能。 唯一的方法是Javascript,因为它以前是从服务器渲染的,我只能访问JSP

这是我现在拥有的,但它不起作用,它只显示相同的消息两次。如果我单击该按钮,则不会显示警报“hello”

<script type="text/javascript">
function addEventBefore(element, type, fn) {
  var old = element['on' + type] || function() {};
  element['on' + type] = function () { fn(); old(); };
}

function sayHello(){
  alert('hello');
}

var arr = document.getElementsByTagName("button");
for (i = 0; i < arr.length; i++) {
  if (arr[i].getAttribute("name") == "Complete"){
    var theclick = arr[i].getAttribute("onClick");
    alert(theclick);
    addEventBefore(arr[i], 'Click', sayHello);
    var theclick2 = arr[i].getAttribute("onClick");
    alert(theclick2);
  }
}
</script>

之前添加的函数(元素、类型、fn){
var old=元素['on'+类型]| |函数(){};
元素['on'+type]=函数(){fn();old();};
}
函数sayHello(){
警惕(“你好”);
}
var arr=document.getElementsByTagName(“按钮”);
对于(i=0;i
这是页面的呈现源代码:

<td valign='top' align='right' >
 <button  name="Complete"  title="The complete Button"
 onClick="document.forms.TaskInfoPage.action='http://prodserver:8080/Approval.jsp?windowId=dd4c0&eventTarget=stepApproval&eventName=Complete'
 document.forms.InfoPage.submit();return false;">Complete</button>
</td>

完成

因此,我想将sayHello()放在它对onClick执行操作之前。

它是
onClick
,而不是
onClick
,因此您需要:

addEventBefore(arr[i], 'click', sayHello);
                     // ^ lower case here
属性本身仍然不会显示任何不同的内容,但事件本身会起作用。另外,要为事件处理程序维护此
,我建议您至少使用以下函数:

function addEventBefore(element, type, fn) {
  var old = element['on' + type] || function() {};
  element['on' + type] = function () { fn.call(this); old.call(this); };
}

我首先尝试了
onclick
,得到了相同的结果,然后我尝试了
onclick
;我要试试这个电话