0

我有这种格式的 HTML:

<form name="fruit_name">
  <input id="fruit-name" type="hidden" name="Banana">
</form>

我让 Dart 像这样查询水果名称:

var fruitName = query('#fruit-name').attributes.values.last;

这在 Chrome 和 Safari 中效果很好。但在 Firefox 中,属性以不同的顺序返回,因此name不再是最后一个。在不依赖浏览器的情况下获取我所追求的属性的最佳方法是什么?

4

2 回答 2

1

attributes是一个 Map,所以这应该工作:

var fruitName = query('#fruit-name').attributes['name'];
于 2013-06-27T20:45:12.477 回答
1

您可以使用 :

var fruitName = query('input#fruit-name').name;

的结果query实际上是一个InputElement并且你在一个简单的Element中有更多的成员。

通过在前面#fruit-name加上input你会告诉分析器的结果query是一个InputElement. 否则,您会收到警告(在 'Element' 中没有这样的 getter 'name')。


最后,从性能的角度来看,最好的方法是使用document.getElementById(id)因为getElementById它确实比querySelector) 快:

InputElement fruitNameElement = document.getElementById('fruit-name');
var fruitName = fruitNameElement.name;

在这里,第一行允许fruitNameElement在调用时键入以防止警告fruitNameElement.name

于 2013-06-27T20:45:49.447 回答