Napisałem system kart za pomocą bardzo prostego kodu JavaScript i działa jak mistrz w IE 8, ale w FireFox 3 podchodzę krótko . Pertitent HTML jest następujący:element.firstChild powraca "<TextNode ..." zamiast obiektu w FF
<div id="tabs">
<ul class="tabs">
<li class="current"><a><span>News</span></a></li>
<li><a><span>Videos</span></a></li>
<li><a><span>Photos</span></a></li>
<li><a><span>Twitter</span></a></li>
</ul>
</div>
Następnie na stronie obciążenia, mam spadł do tej metody:
function processTabs(TabContainer, PageContainer, Index) {
var tabContainer = document.getElementById(TabContainer);
var tabs = tabContainer.firstChild;
var tab = tabs.firstChild;
var i = 0;
.... more code }
Reszta kodu nie ma znaczenia w tym momencie, ponieważ nigdy nie jest wywoływana . tabContainer jest ustawiony prawidłowo, aby odwoływać się do elementu div za pomocą zakładek ID. Teraz w Internet Explorerze, gdy wywołuję tabContainer.firstChild, zmienna "tabs" odwołuje się do mojego UL, a następnie wywołuje var tab = tabs.firstChild; odnosi się do mojego pierwszego LI. Problem polega na tym, że kiedy dzwonię do tabContainer.firstChild Venkman mówi mi, że powraca. Tak więc firefox czyta moje nowe linie jako rzeczywiste dzieci w div! Mój UL jest w rzeczywistości drugim dzieckiem w kolekcji childNodes!
Czy można to naprawić?
Dzięki!
Ładnie wykonane, zadziałało jak urok! – dparsons
W funkcji 'getFirstChild' chciałbym sprawdzić' firstChild.nodeType! = 1' zamiast 'firstChild.nodeType == 3', aby pominąć także inne typy węzłów, takie jak komentarze. – Cito
Ta odpowiedź powinna zostać zaktualizowana do sugerowanej zmiany @Cito, po prostu napotkałem programistę, który skopiował ten dokładny kod, i na pewno był komentarz HTML przed pierwszym szukanym elementem ...a zatem nie powiodło się. – scunliffe