Javascript 通过事件访问parentElement属性
我有一个div,我称之为quote_div,是parentElement。它包含两个Javascript 通过事件访问parentElement属性,javascript,html,dom,Javascript,Html,Dom,我有一个div,我称之为quote_div,是parentElement。它包含两个input type=“number”元素,一个元素,我称之为r\u lbl(变量名),另一个元素称为r\u position(一个div中有四个元素) 我在div上放置了一个事件侦听器,以便在更改input type=“number”元素时可以执行计算 quote_div.addEventListener(“变更”,计算成本) 现在我试图使用事件触发器e(被解析为calculateCost(e)函数)访问div
input type=“number”
元素,一个
元素,我称之为r\u lbl(变量名),另一个
元素称为r\u position(一个div中有四个元素)
我在div上放置了一个事件侦听器,以便在更改input type=“number”
元素时可以执行计算
quote_div.addEventListener(“变更”,计算成本)代码>
现在我试图使用事件触发器e(被解析为calculateCost(e)函数)访问div上的r_position元素,但是我得到了一个未定义的错误,这很奇怪,因为我已经预定义了r_position的值
console.log("li element position: " + e.target.parentElement.r_position.value);
这样做不可能吗?如果是,我还不明白什么?根据您的HTML结构,您可以使用或:
const div=document.getElementById('quote_div');
div.addEventListener('change',(e)=>{
const target=e.target;
常量标签=target.previousElementSibling;
console.log(label.innerText);
});代码>
标签1
标签2
是这样吗?我认为target引用了触发事件的input type=“number”元素。未定义
不是错误,而是一个值e.currentTarget
包含对事件附加到的元素的引用。但是,不清楚“元素称为r_位置”是什么意思,该元素的r_位置是id
还是name
?如果是这种情况,最好使用适当的DOM getter来获取引用,而不是直接点表示法。如果您提供一个HTML示例而不是描述它,那么回答这个问题会更容易。@Teemu我在一个函数中动态创建了r\u位置:var r\u position=document.createElement(“标签”)。所以r_位置就是变量名本身。我想用java的思路,用点表示法来访问东西,我只是不确定它是否可能,因为我得到的是undefinedAh的值,好吧。然后它不是父元素的属性,只是JS变量的名称。使用e.currentTarget.querySelector('label'))
要获取对标签的引用,然后检索textContent
,标签没有值。(或者.queryselectoral('label')[1]
,如果目标标签不是div中的第一个标签。)@Teemu,这是有道理的。我认为在标签的情况下,使用.value会给出文本内容。我很感激insight@Danzinger感谢链接到NondDocumentTypeChildNode,我不知道它存在,但它可能正是我所需要的。