我通过vba代码操作IE,添加了一个按钮,并且绑定了onclick()对象,但是点击无效。
```vb.net
Sub vba添加元素()
Dim roIe As Object
Set roIe = CreateObject("internetExplorer.application")
roIe.Visible = True
' roIe.Navigate ("c:\tiaoshi.html")
roIe.Navigate ("c:\linshi.html")
Do Until roIe.ReadyState = 4
DoEvents
Loop
Stop
Set doc = roIe.Document
Set ele3 = doc.createElement("input")
ele3.Value = "new"
ele3.ID = "new"
ele3.onclick = "tt()"
ele3.Type = "button"
doc.body.appendChild (ele3)
'doc.getElementById("new").Click '这样操作也无效
End sub
linshi.html代码如下
```html
<html>
<head>
<script type="text/javascript">
function tt() {
alert("fafaf");
}
</script>
</head>
<body>
<input id="3" type="button" value="tt" onclick="tt()"><br>
</body>
</html>
因为你不理解页面的生存周期
当IE提交get请求给服务端,服务端生成一个html页面给IE,此时服务端程序就结束了,内存里不保留任何东西
当IE点击按钮后,IE连同表单一起用post请求提交给服务端,服务端接收后执行对应方法,重新生成html页面交给IE
每次点击按钮,服务端都会从page_load函数开始执行,最后才执行按钮绑定的事件函数
那么你在按钮里动态添加的按钮,动态绑定的事件,在IE再次提交后并没有再次执行这段代码,那么按钮本身还在表单中不会消失,但事件没有再次绑定已经失效了
你必须在page_load里就直接添加按钮并绑定事件,后面才可以响应事件