Если я правильно помню, dojo.query
не обязательно гарантирует "хронологический" порядок в возвращаемом NodeList, особенно для сложных запросов. Обычно это происходит из-за того, что для некоторых браузеров / в некоторых сценариях приходится объединять несколько разнородных результирующих наборов, и попытка переупорядочить это в зависимости от того, где находится каждый элемент в документе, вероятно, была бы гораздо большим ударом по производительности. чем это стоит.
Тем не менее, я не уверен, что предложить в качестве альтернативы. Было бы достаточно легко найти первое из одного ИЛИ по отдельности, но не при поиске обоих в одном запросе.
Если ваша форма имеет некоторую непротиворечивую разметку вокруг ваших входных данных (например, каждое поле находится внутри, скажем, div с class="field"
), я полагаю, вы могли бы сделать что-то вроде этого:
dojo.query('.field:first-child select, .field:first-child input')