Ваш код getElementById()
работает, поскольку идентификаторы должны быть уникальными, и поэтому функция всегда возвращает ровно один элемент (или null
, если ни один не найден).
Однако getElementsByClassName()
, querySelectorAll()
и другие методы getElementsBy*
возвращают массивный набор элементов. Итерации над ним, как и с реальным массивом:
var elems = document.getElementsByClassName('myElement');
for(var i = 0; i < elems.length; i++) {
elems[i].style.size = '100px';
}
Если вы предпочитаете что-то более короткое, рассмотрите использование jQuery :
$('.myElement').css('size', '100px');
Я не буду включать все детали, но вы определяете глобальную переменную wat
дважды в вашей компиляции uint.
Чтобы исправить, используйте следующее:
FileB.h
extern int wat;
FileB.cpp
int wat = 0;
Это (extern
) сообщает компиляции, что переменная wat
существует где-то и что он должен найти его на своем собственном (в этом случае он находится в FileB.cpp
)
Я нашел ответ сейчас (думаю, посмотрел на файлы один за другим помог) Проблема в том, что компилятор создает FileB.o, который имеет определение wat, а затем пытается скомпилировать FilB.o с FileA. cpp, в то время как FileA.h включает в себя файл FileB.h, теперь у него также будет определение wat.
Не объявляйте переменную в заголовке. #include
буквально копирует и вставляет содержимое файла в другой файл (то есть любой файл, который делает #include "FileB.h"
, буквально копирует содержимое FileB.h в него, что означает, что int wat
определяется в каждом файле, который #include "FileB.h"
).
Если вы хотите получить доступ к wat
из FileA.cpp и объявлен в FileB.cpp, вы можете пометить его как extern
в FileA.cpp.
Это объявление переменной wat является определением, которое должно принадлежать в файле cpp. Это как если бы вы поместили свои тела функций в заголовок.
Вам нужно поставить extern перед объявлением wat и скопировать текущее объявление без extern в один из файлов cpp.
Вы получаете несколько определений, потому что wat
объявляется в области файла и дважды отображается в двух исходных файлах.
Вместо этого сделайте переменную declartion extern
и определите ее точно в одном исходном файле.
extern int wat; // In FileB.h
int wat; // In FileB.cpp
const
? Оптимизация компилятора выполняется на этапе компиляции или стадии ссылки? – ar2015 1 March 2018 в 00:55