2017-10-10 96 views
10

bu vardı:MS Edge neden spread öğesi ve querySelector ile çalışmıyor? yayınlanan başka bir soru ise

function expected

Ancak bu çalışmaktadır:

this.products = [...document.querySelectorAll('.product')]; 

Kenar aşağıdaki hata ile başarısız olur

var params = ['hello', '', 7]; 
var other = [ 1, 2, ...params]; 

Neden üst değil Biri Edge üzerinde çalışıyor (Chrome'da)?

+1

Bunu denediniz mi? [... (document.querySelectorAll ('. Ürün'))] '? –

+1

Senin önerinde yaptım, çalışmıyor! – Mouser

+5

Edge, 'NodeList's için yineleyici protokolünü uygulamıyor olabilir mi? * edit: * yep: https://developer.mozilla.org/en-US/docs/Web/API/NodeList#Browser_compatibility (en azından 'entry()', 'values ​​()' vb. , iterator protokolünü desteklediyse, inanıyorum. –

cevap

7

Nesne benzeri bir diziden bir dizi oluşturan Array.from kullanabilirsiniz. Bergi Felix doğru yolda olduğu gibi

this.products = Array.from(document.querySelectorAll('.product')); 
+2

Zaten tür dönüşümleri için [tercih edilen sözdizimi] (https://stackoverflow.com/a/40549565/1048572) var – Bergi

1

Eh görünüyor: MDN'yi bu document onlar yineleyiciler hakkında konuşun.

Some built-in constructs, such as the spread operator, use the same iteration protocol under the hood:

Yani Dizi entries() Kenardan bir nodelist yok ve desteklemeyen iterasyon var nerede.

Nina'nın cevabı, bir oyun!