无法访问 Haxe DOMStringMap 值

Haxe DOMStringMap values not accessible

我试图在 Haxe 的浏览器中访问元素的 'data-*' 属性。

var element = document.getElementById('#someId');
var dataLabel = 'label'; //'data-label'
element.dataset[dataLabel] = 5;

该代码(在 javascript 中正常工作)在 HaxeDevelop 中产生了两个编译错误。

  1. "String should be Int"

  2. "For function argument 'data'"

如何访问 Haxe 中的元素数据集?有已知的正确方法吗?

我最终使用 Element#getAttribute and Element#setAttribute 方法来完成相同的功能。

var element = document.getElementById('#someId')
var dataLabel = 'label'; //'data-label'
element.setAttribute('data-' + dataLabel, 5);

我认为这是数组访问运算符在 Haxe 中工作方式的缺点。

只有 abstract 类型可以定义数组访问,如 the manual states here

Haxe 的 DOMStringMap 只是一个外部 class,因此它不能使用 String 作为键而不是 Int.[=18 的数组访问=]

现在,有很多方法可以解决这个问题。 untyped 关键字 seen here 是您的初始示例可以工作的一种方式。 untyped 虽然不推荐,但它是易碎代码的滑坡,您应尽可能避免。