Więc uczę się manipulować DOM i zauważyłem jedną ciekawą rzecz:Javascript: setAttribute() v.s. element.attribute = wartość ustawić „name” Atrybut
Powiedzmy, że chcemy ustawić atrybut elementu name
przy użyciu”. " notacja kropka:
element.name = "someName";
console.log(document.getElementsByName("someName")[0]); // returns "undefined"??
Jednak w przypadku korzystania z metody document.setAttribute()
, to działa dobrze:
element.setAttribute("name", "someName");
console.log(document.getElementsByName("someName")[0]); // returns the element like it should.
Nie wiem, dlaczego metoda notacja kropka nie działa w pierwszym przypadku.
Dlaczego tak się dzieje?
Generalnie staraj się unikać używania 'getElementsByName' – zzzzBov
Dlaczego należy unikać używania getElementsByName? –
Atrybuty Są dostępne za pomocą notacji kropkowej, jeśli w ten sposób chcesz uzyskać do nich dostęp. Jeśli chcesz uzyskać dostęp do atrybutów za pomocą notacji kropkowej, musisz odwołać się do obiektu obj.attributes.attributeName, aby pobrać atrybut i obj.attributes.attributeName.value, aby manipulować jego wartością. Długo się kurczy w porównaniu z atrybutem setAttribute lub getAttribute. i niezalecane jako rozwiązanie, ale niezależnie od tego, pełna odpowiedź na pytanie "Dlaczego notacja kropkowa nie działa w pierwszym przypadku" - musi zawierać "tak" Po prostu szukałeś w niewłaściwym miejscu atrybutów i ich wartości. " – Radiotrib