使用jQuery插入元素值到alert弹窗时获取strong内容返回undefined
问题根因
- 核心取值错误:
value是表单元素(input、textarea、select等)的专属属性,普通HTML元素(比如你代码中选中的<strong>标签)不存在该属性,读取时自然返回undefined。 - 你的DOM节点遍历逻辑本身可以正确定位到目标
<strong>元素,只是取值方法使用错误,普通元素的内部文本需要通过textContent(原生JS属性)或jQuery的.text()方法获取。
修正代码
只需要修改alert中读取label文本的部分即可,修正后的完整JS代码如下:
$('.copyURL').click(function(e) { e.preventDefault(); let ele = $(this).parent().siblings(':first-child').children(); let label = $(this).parent().parent().siblings(':first-child').children(); ele[0].select(); ele[0].setSelectionRange(0, 99999); navigator.clipboard.writeText(ele[0].value); // 将label[0].value替换为label[0].textContent读取普通元素文本 alert(label[0].textContent + "\r\n" + "\r\n" + "Copied: " + ele[0].value + "\r\n" + "\r\n" + "Use this link for your WEB site"); });
优化建议:当前的节点遍历逻辑强依赖现有HTML层级,后续如果调整DOM结构很容易失效,可以替换为容错率更高的选择器写法:
let label = $(this).closest('.row').siblings('label').find('strong');,不需要严格匹配层级关系,只要在对应父容器内找到目标label下的strong即可。
内容的提问来源于stack exchange,提问作者WheresMyElement
相关产品推荐
相关产品推荐

