Вы используете массив как объект, разница между getElementbyId
и getElementsByClassName
такова:
getElementbyId
вернет вам объект. getElementsByClassName
вернет вам массив. Метод
blockquote>getElementsByClassName(classNames)
принимает строку, содержащую неупорядоченный набор уникальных разделенных пробелами маркеры, представляющие классы. При вызове метод должен возвращать живой объектNodeList
, содержащий все элементы документа, которые имеют все классы, указанные в этом аргументе, получив классы, разделив строку на пробелы. Если в аргументе нет токенов, тогда метод должен возвращать пустой NodeList.https://www.w3.org/TR/2008/WD-html5 -20080610 / dom.html # getelementsbyclassname
getElementById
Метод getElementById () обращается к первому элементу с указанным id.
blockquote>http://www.w3schools.com/jsref/met_doc_getelementbyid.asp
в вашем коде строки:
1- document.getElementsByClassName ('myElement'). Style.size = '100px';
blockquote>НЕ будет работать, как ожидалось, потому что
getElementByClassName
вернет массив, и массив будет НЕ имеет свойствоstyle
, вы будете обращаться к каждомуelement
, итерации их.Вот почему функция
getElementById
работает на вас, эта функция вернет вам прямой объект, и поэтому вы сможет получить доступ к свойствуstyle
.
Здесь есть несколько проблем. Вы должны использовать JSLint , который является очень хорошим инструментом обеспечения качества JavaScript. Это подтвердит ваш JavaScript и укажет на кажущиеся проблемы.
Сначала:
aircon = "yes"
должно быть
aircon == "yes"
во-вторых:
if result = "Lambourghini Aventador")
должно быть
if (result == "Lambourghini Aventador")
в-третьих
result = "some form of SUV"
должно быть
result = "some form of SUV";
в-четвертых
воздерживаться от используя ==
, вместо этого используйте стандарт JavaScript ===
. Читайте, почему здесь, в этой очень хорошей записи Stackoverflow !
==
во всем своем ответе? Теперь это иронично! :п – Florian Margaine 10 April 2012 в 12:36