能否通过DOM元素ID获取Stripe Card Element对象?是否需存储变量?
关于Stripe Card Element的检索与清除数据问题
好问题!我来帮你梳理清楚Stripe Elements这里的使用逻辑:
核心结论:不能通过DOM元素ID获取Card Element对象
你提到的elements.retrieve('card-element')是行不通的,因为elements.retrieve()方法的参数是Element的类型(比如'card'),而不是它挂载的DOM元素ID。
Stripe的Elements实例是按元素类型来管理内部的Element对象的,和你挂载时用的DOM容器ID没有直接绑定关系。所以想通过DOM ID反向获取Element对象是做不到的。
正确的做法
1. 优先存储Card Element对象到可访问的变量中
这是最稳妥的方式,就像你一开始创建时那样:
// 把card对象存在全局作用域或者当前模块可访问的位置 var card = elements.create('card', {style: style}); card.mount('#card-element');
之后在其他函数里直接使用这个card变量就行,比如清除数据:
// 清除信用卡输入数据 card.clear();
2. 特殊场景下用类型检索(谨慎使用)
如果确实没保存变量,且页面上只有一个Card类型的Element,可以通过elements.retrieve('card')来获取它,然后调用清除方法:
const cardElement = elements.retrieve('card'); cardElement.clear();
但要注意:如果页面上存在多个同类型的Element(比如多个Card元素),retrieve只会返回第一个创建的Element,这种场景下就会出错,所以还是建议提前存储变量更可靠。
关于清除信用卡数据的补充
除了clear()方法,如果你需要完全重置Element(比如重新挂载),也可以先调用card.unmount(),再重新挂载到DOM容器,但clear()已经足够满足清除输入数据的需求了。
内容的提问来源于stack exchange,提问作者RTF
相关产品推荐
相关产品推荐

