Javascript 当连字符位于属性中时,如何分解e.target?
我有一个像这样的输入字段Javascript 当连字符位于属性中时,如何分解e.target?,javascript,javascript-events,ecmascript-6,destructuring,Javascript,Javascript Events,Ecmascript 6,Destructuring,我有一个像这样的输入字段 <input placeholder="Card Number" name="cc-number" data-stripe="number" class="add-card-form__card-number input" value=""> onFocus (e) { const { 'data-stripe': name, value } = e.target // do something with `name` and `value` }
<input placeholder="Card Number" name="cc-number" data-stripe="number" class="add-card-form__card-number input" value="">
onFocus (e) {
const { 'data-stripe': name, value } = e.target
// do something with `name` and `value`
}
我知道我可以使用e.target.getAttribute('data-stripe')
,但这违背了解构的目的。有什么办法吗
这里写的正是我在做的 DOM元素中没有
数据条带
属性。所有data XXX
属性都将转换为dataset
属性的属性。因此,您应该使用:
onFocus(e) {
const { dataset: { stripe: name }, value } = e.target;
// do something with name and value
}
它也可以作为
attributes
属性的元素进行访问,但由于这是一个数组,并且顺序不可预测,因此它对分解结构没有用处。这不是连字符问题,只是没有正确调用HTML DOM。即使您的自定义属性是“stuff”,也不能作为e.target.stuff访问它。您自己的链接显示了如何访问连字符:属性
var {"data-stripe":{value:myVariableName}} = e.target.attributes;
//myVariableName="number"