yujx1217 2022-03-18 14:00 采纳率: 100%
浏览 40
已结题

vb操作IE动态添加的按钮不能onclick无效?

问题遇到的现象和发生背景

我通过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>


运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
  • 写回答

1条回答 默认 最新

  • 於黾 2022-03-18 14:07
    关注

    因为你不理解页面的生存周期
    当IE提交get请求给服务端,服务端生成一个html页面给IE,此时服务端程序就结束了,内存里不保留任何东西
    当IE点击按钮后,IE连同表单一起用post请求提交给服务端,服务端接收后执行对应方法,重新生成html页面交给IE
    每次点击按钮,服务端都会从page_load函数开始执行,最后才执行按钮绑定的事件函数
    那么你在按钮里动态添加的按钮,动态绑定的事件,在IE再次提交后并没有再次执行这段代码,那么按钮本身还在表单中不会消失,但事件没有再次绑定已经失效了
    你必须在page_load里就直接添加按钮并绑定事件,后面才可以响应事件

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 3月28日
  • 已采纳回答 3月20日
  • 创建了问题 3月18日

悬赏问题

  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事:
  • ¥15 前置放大电路与功率放大电路相连放大倍数出现问题
  • ¥30 关于<main>标签页面跳转的问题
  • ¥80 部署运行web自动化项目
  • ¥15 腾讯云如何建立同一个项目中物模型之间的联系
  • ¥30 VMware 云桌面水印如何添加
  • ¥15 用ns3仿真出5G核心网网元
  • ¥15 matlab答疑 关于海上风电的爬坡事件检测