DOM高级:事件对象与兼容处理

需积分: 5 1 下载量 35 浏览量 更新于2024-08-03 收藏 4KB MD 举报
"关于DOM操作和事件处理的高级知识,特别是事件对象(event)的使用和兼容性处理" 在前端开发中,DOM(Document Object Model)是HTML和XML文档的编程接口,而事件处理则是与用户交互的关键部分。这篇文档主要探讨的是DOM高级应用中的事件对象(event)相关知识。 #### 1. Event对象 **1.1 event概念和作用** Event对象是系统为我们封装的,它包含了与特定事件相关的所有信息。无论是什么事件,如点击、鼠标移动、键盘输入等,都会有一个对应的Event对象。通过这个对象,我们可以获取到事件触发时的各种详细信息,如事件类型、触发元素、事件坐标等。 **1.2 event兼容性处理** 在不同的浏览器环境下,获取事件对象的方式有所不同。在高级浏览器(如Firefox、Chrome)中,事件处理函数的回调参数会自动接收Event对象,如`function(event)`。而在旧版本的IE浏览器中,事件对象是作为全局变量`window.event`存在的。因此,为了确保兼容性,我们通常会使用以下代码来获取Event对象: ```javascript event = event || window.event; ``` 这样无论哪种环境,我们都能正确地拿到事件对象。 #### 1.3 目标元素节点兼容处理 事件的目标元素指的是触发事件的原始元素,可以通过`event.target`来获取。然而,在老版本的IE浏览器中,应该使用`event.srcElement`。为了兼容各种浏览器,我们可以这样获取目标元素: ```javascript var target = e.target || e.srcElement; ``` 在给定的代码示例中,我们看到一个`<ul>`列表,当鼠标移到列表项上时,会改变其背景色。如果鼠标移到的是内嵌的`<span>`元素,那么就改变其父`<li>`元素的背景色。这里就是通过判断`target.nodeName`来实现这一功能的。 ```javascript if (target.nodeName === 'LI') { target.style.backgroundColor = 'hotpink'; } elseif (target.parentElement.nodeName === 'LI') { target.parentElement.style.backgroundColor = 'hotpink'; } ``` 这段代码检查了当前鼠标移入的元素是否是`<li>`,或者其父元素是否是`<li>`,并相应地改变背景色。 总结来说,理解和掌握Event对象及其兼容性处理是进行高效和跨浏览器的DOM事件处理的关键。在实际开发中,我们经常会遇到类似的问题,需要灵活运用这些技巧来编写健壮的代码。
2023-06-19 上传

帮我解析一下这个java错误,Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "SELECT C.PERIOD_NO, C.BILL_MONTH, C.LOCAL_AIR_CODE, C.INT_DOM_INDICATOR, 'GLOBAL' AS CHECK_CODE, CASE WHEN COUPON_COUNT_GLOBAL = COUPON_COUNT_REPORT AND TAX_AMT_GLOBAL = TAX_AMT_REPORT AND ISC_AMT_GLOBAL = ISC_AMT_REPORT AND UATP_AMT_GLOBAL = UATP_AMT_REPORT AND GROSS_AMT_GLOBAL = GROSS_AMT_REPORT THEN 'S' ELSE 'F' END AS CHECK_RESULT_IND, TAX_AMT_GLOBAL AS TAX_AMT_ACTUAL, TAX_AMT_REPORT AS TAX_AMT_EXPECTED, ISC_AMT_GLOBAL AS ISC_AMT_ACTUAL, ISC_AMT_REPORT AS ISC_AMT_EXPECTED, UATP_AMT_GLOBAL AS UATP_AMT_ACTUAL, UATP_AMT_REPORT AS UATP_AMT_EXPECTED, GROSS_AMT_GLOBAL AS GROSS_AMT_ACTUAL, GROSS_AMT_REPORT AS GROSS_AMT_EXPECTED, COUPON_COUNT_GLOBAL AS COUPON_COUNT_ACTUAL, COUPON_COUNT_REPORT AS COUPON_COUNT_EXPECTED FROM ( ( SELECT BILL_MONTH, PERIOD_NO, LOCAL_AIR_CODE, INT_DOM_INDICATOR, SUM(COUPON_COUNT) AS COUPON_COUNT_GLOBAL, CASE WHEN SUM(GROSS_AMT_BILLING) IS NULL THEN 0 ELSE SUM(GROSS_AMT_BILLING) END AS GROSS_AMT_GLOBAL, CASE WHEN SUM(BILL_TAX_BILLING) IS NULL THEN 0 ELSE SUM(BILL_TAX_BILLING) END AS TAX_AMT_GLOBAL, CASE WHEN SUM(ISC_AMT_BILLING) IS NULL THEN 0 ELSE SUM(ISC_AMT_BILLING) END AS ISC_AMT_GLOBAL, CASE WHEN SUM(UATP_AMT_BILLING) IS NULL THEN 0 ELSE SUM(UATP_AMT_BILLING) END AS UATP_AMT_GLOBAL FROM OWB_GLOBAL_REPORT WHERE REPORT_TYPE = 'R' AND DELETE_IND IS NULL AND PERIOD_NO = ? AND BILL_MONTH = ? AND INT_DOM_INDICATOR = ? AND LOCAL_AIR_CODE = ? GROUP BY BILL_MONTH, PERIOD_NO, LOCAL_AIR_CODE, INT_DOM_INDICATOR) C[*] INNER JOIN ( SELECT BILL_MONTH, PERIOD_NO, LOCAL_AIR_CODE, INT_DOM_INDICATOR, SUM(COUPON_COUNT) AS COUPON_COUNT_REPORT, CASE WHEN SUM(GROSS_AMT_BILLING) IS NULL THEN 0 ELSE SUM(GROSS_AMT_BILLING) END AS GROSS_AMT_REPORT, CASE WHEN SUM(BILL_TAX_BILLING) IS NULL THEN 0 ELSE SUM(BILL_TAX_BILLING) END AS TAX_AMT_REPORT, CASE WHEN SUM(ISC_AMT_BILLING) IS NULL THEN 0 ELSE SUM(ISC_AMT_BILLING) END AS ISC_AMT_REPORT, CASE WHEN SUM(UATP_AMT_BILLING) IS NULL THEN 0 ELSE SUM(UATP_AMT_BILLING) END AS UATP_AMT_REPORT FROM OWB_REPORT WHERE ADJ_MONTH IS NULL AND PERIOD_NO = ? AND BILL_MONTH = ? AND INT_DOM_INDICATOR = ? AND LOCAL_AIR_CODE = ? GROUP BY BILL_MONTH, PERIOD_NO, LOCAL_AIR_CODE, INT_DOM_INDICATOR) R ON C.BILL_MONTH = R.BILL_MONTH AND C.PERIOD_NO = R.PERIOD_NO AND C.LOCAL_AIR_CODE = R.LOCAL_AIR_CODE AND C.INT_DOM_INDICATOR = R.INT_DOM_INDICATOR )"; expected "UNION, EXCEPT, MINUS, INTERSECT, ORDER, OFFSET, FETCH, LIMIT, SAMPLE_SIZE, FOR, )";

2023-07-13 上传