打字稿:财产'数据'剂量不存在于HTMLElement类型上

时间:2018-02-23 10:04:12

标签: javascript angular typescript

我尝试获取所有在打字稿中都有类名的元素,并且需要检查每个元素的数据属性,这是我到目前为止所做的:

let getTopElements :NodeListOf<HTMLElement>  = document.querySelectorAll('.timeline-row');
var newArr: HTMLElement[] = Array.prototype.slice.call(getTopElements);

if (getTopElements){
  for (let element of newArr){
    if (element.data('options') && element.data('options').type === 'TOP')   {
       this.player.currentTime(element.data('options').end).pause();
     }
   }
 }

但在我的if条件行中,我在数据Property 'data' dose not exist on type HTMLElement

上收到此错误

我这样做错了吗?

1 个答案:

答案 0 :(得分:1)

因为data()是jQuery获取数据属性的方法。您应该使用dataset属性来修改和读取数据属性。另请注意,您只能在数据属性中存储字符串值:

 const data = element.dataset;
 data.optionsType = 'TOP';
 if (data.optionsType === 'TOP')   {
   this.player.currentTime(data.optionsEnd).pause();
 }

另一种选择是使用getAttribute('data-*')获取值,或使用setAttribute('data-*', value)来设置值。

您可以查看MDN page以获取有关如何正确使用数据属性的教程。