ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: OKJSJSF

[求助] HTML文档的计算问题

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-10-8 23:08 | 显示全部楼层
zpy2 发表于 2024-7-27 18:05
如果代码规模不大,又是一次性的,咋办都行

老师好!学生还在弄通讯录。准备做三种样式,以前文档结构图是第一种样式,样式二是菜单在页面上部的,兄弟元素同时显示的,样式三是采用组合框也就是多级下拉列表那种样子,也放在页面顶端,不展开,只占一行空间,随点击从左往右依次展开,第二行开始是全部姓名电话。
今天在练父元素监听器,想把重复语句换成循环语句,没成功。一级父元素三个设三个ID,二级父元素21个设21个ID,三级父元素60个设60个ID,第四级为最后,约600个人的姓名电话,设约600个ID。
<script>
let li=document.getElementById('zero');
li.addEventListener('click',(event) =>{
let target=event.target;
switch(target.id){
case "one1":alert(target.innerText);break;
case "one2":alert(target.innerText);break;
case "one3":alert(target.innerText);break;
case "two1":alert(target.innerText);break;
...
case "two21":alert(target.innerText);break;
case "three1":alert(target.innerText);break;
...

case "three60":alert(target.innerText);break;
case "four1":alert(target.innerText);break;
...
case "four600":alert(target.innerText);break;
}
})
</script>
当把四类元素设为四个数组,改为四个循环语句时没成功。switch(target.id){for(,,){  ; ;}for(,,){  ; ;}for(,,){  ; ;}for(,,){  ; ;}}

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-10-9 20:14 | 显示全部楼层
本帖最后由 OKJSJSF 于 2024-10-12 18:25 编辑

var arr=["one1","one2","one3"];
for(var i=0;i<arr.length;i++){"case '" + arr + "':" + alert(target.innerText);break;}
一级标题三个ID,点击任一个时,弹窗显示标题文本,不成功。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-10-9 20:57 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
var arr=["one1","one2","one3"];
if(target.id in arr){alert(target.innerText);break;}
也不行

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-10-9 21:06 | 显示全部楼层
var arr=["one1","one2","one3"];
for(var i=0;i<arr.length;i++){if(arr[i] == target.id){alert(target.innerText);break;};}
也不行

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-10-9 21:35 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
<script>
let li=document.getElementById('zero');
li.addEventListener('click',(event) =>{
let target=event.target;
switch(target.id){
var arr=["one1","one2","one3"];
var id=target.id
if(id in arr){alert(target.innerText);break;}

case "two1":alert(target.innerText);break;
...
case "two21":alert(target.innerText);break;
case "three1":alert(target.innerText);break;
...

case "three60":alert(target.innerText);break;
case "four1":alert(target.innerText);break;
...
case "four600":alert(target.innerText);break;
}
})
</script>
还是不行

TA的精华主题

TA的得分主题

发表于 2024-10-11 14:34 | 显示全部楼层
OKJSJSF 发表于 2024-9-13 13:03
三级节点的通讯录已完成,类似WORD的文档结构图,感觉很好用,在手机上,网页文件解决了手机对excel支持 ...

希望越做越好!

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-10-11 21:54 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

折腾中,进展缓慢.

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-10-11 22:59 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
终于完成,代码简化如下。
<script>
const li=document.getElementById('zero');
li.addEventListener('click',function(event){
const target=event.target;
if(target.matches('summary')||target.matches('li')){
alert(target.innerText);}
})
</script>
innerText可以换成textContent。这样,当点击首个父元素下的所有标签为summary的元素(菜单的折叠/展开开关)或标签为li的元素(最末级子元素,既具体内容,比如每一行电话信息)时,可以获取其文本。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-10-11 23:07 | 显示全部楼层
下面这样也行。
<script>
const li=document.getElementById('zero');
li.addEventListener('click',myf,false);
function myf(event){
const target=event.target;
if(target.matches('summary')||target.matches('li')){alert(target.innerText);}
}
</script>

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-10-11 23:10 | 显示全部楼层
百度的AI智能回答真不错:target.matches('标签')
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-21 19:02 , Processed in 0.043246 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表