2016-03-23 11 views
1

onfocus olayındaki tüm alt öğeleri <select> öğesinden kaldırması beklenen bir işlev var. (Yakında <select>'u AJAX çağrısından gelen değerlerle doldurarak bunu takip etmelisiniz.) Bir sebepten ötürü, ilk çağrıldığında öğelerin birini kaldırır ve ardından gelen tüm çağrıları yapmaz. Bunun neden olabileceğine dair bir ipucu var mı?Bu, neden tüm öğeleri <select> öğesinden kaldırmıyor?

JS Kod:

function handle(e) { 
    for(var i = 0; i < e.children.length - 1; i++) { 
    e.removeChild(e.children[i]); 
    } 
} 
+0

Eğer çocuk [0] çıkarırsanız, çocuk [1] hemen çocuğa dönüşür [0] .JQuery empty() işlevini kullanın. –

+0

OH !!!!!!, bu yüzden onları tersine kaldırmalıyım order. (facepalms self) –

+0

Seçenekleri kaldırmak için sadece 'select.options.length = 0' veya' set (select.firstChild) select.removeChild (select.firstChi) ld) 'veya… Oh, ve birden fazla çocuğa sahip olan her şey için aynı olacak. – RobG

cevap

1

bu durumda e etkinlik nesnesidir.. Kendisi bir değişiklik yapıldığında her zaman reorganizes senin onfocus olay işleyicisi olan ve herhangi children, tesisi yoktur

neden Sadece select.innerHTML = ""

kullanın
+0

Vay (kendiliğinden tekrar facepalms) (tekrar kendini facepalms) (Sokka-Face kilidi) –

0

Yani cevap VB.NET Liste Class oldukça benzer bir endeksleme sisteminin etkilerinden kaçınmak amacıyla, ters sırayla bunları kaldırmak için basitçe. (Yani ben handle() tahmin ediyorum

İlgili konular