Использование одного и того же идентификатора более чем некорректно разметки, а когда getElementById
возвращает только один элемент, он возвращает первый, с которым он сталкивается.
Однако, если вы не можете изменить разметки с использованием существующего сценария точно так же, как вы можете использовать querySelectorAll
для выбора всего элемента с тем же значением атрибута id
.
var videos = document.querySelectorAll('[id="vid"]')
for (var i = 0; i < videos.length; i++) {
videos[i].addEventListener('ended', function() {
// Reset the video to
video.currentTime = 0;
// And play again
video.load();
});
}
Однако, если вы можете используйте другие средства для идентификации элементов, таких как атрибуты данных или классы.
Лично я склоняюсь к атрибутам данных для функционального использования и оставляю классы для использования CSS.
Таким образом, их использует исключение для посещения, а пользовательские интерфейсы, изменяющие классы / css, не будут влиять на ваш функциональный код, поскольку они не должны изменять атрибуты и наоборот.
blockquote>
int x = 4<5;
Полностью портативный. Стандартное соответствие. bool
to int
неявно!
§4.7 / 4 из C ++ Standard говорит (Integral Conversion )
Если тип источника - bool, значение
blockquote>false
преобразуется в ноль, а значениеtrue
преобразуется в единицу.
Что касается C, насколько я знаю, существует no
bool
в C. (до 1999 года) Таким образом, преобразованиеbool
вint
имеет значение только на C ++. В C4<5
оценивается значениеint
, в этом случае значение равно1
,4>5
будет оценивать значение0
.EDIT: Jens в комментарии сказал: C99 имеет
_Bool
.bool
- макрос, определенный в файле заголовкаstdbool.h
.true
иfalse
также являются макросами, определенными вstdbool.h
.§7.16 из C99 говорит,
Макрос
bool
расширяется до _Bool.[..]
blockquote>true
, который расширяется до целочисленной константы1
,false
, которая расширяется до целочисленной константы0
, [..]
Кажется, нет проблем, поскольку int to bool cast выполняется неявно. Это работает в компиляторе Microsoft Visual C ++, GCC и Intel C ++. Нет проблем ни на C, ни на C ++.
Вы одновременно отметили свой вопрос [C] и [C ++]. Результаты будут согласованы между языками, но структура ответа различна для каждого из этих языков.
На языке C ваши примеры не имеют никакого отношения к bool
вообще (что относится к C99 as Что ж). В языке C реляционные операторы не дают результатов bool
. И 4 > 5
, и 4 < 5
являются выражениями, которые дают результаты типа int
со значениями 0
или 1
. Таким образом, в ваших примерах нет никакого преобразования «bool to int» в ваших примерах в C.
. В C ++ реляционные операторы действительно дают результаты bool
. Значения bool
конвертируются в тип int
, при этом true
преобразуется в 1
и false
преобразование в 0
. Это гарантируется языком.
P.S. Язык C также имеет выделенный логический тип _Bool
(с макроснимками как bool
), а его интегральные правила преобразования по существу те же, что и в C ++. Но тем не менее это не относится к вашим конкретным примерам в C. Еще раз, реляционные операторы в C всегда вызывают результаты int
(not bool
) независимо от версии спецификации языка.
bool
, реляционные операторы все еще производят int
в C99, а не bool
. Итак, если вас интересуют специфические реляционные операторы (как в ваших примерах), проблема все еще не связана с bool
.
– AnT
20 March 2011 в 19:05
int
, а не bool
. Преобразование не выполняется.
– R..
20 March 2011 в 23:20
bool
в C. Просто используйте «stdbool.h». заголовок, и это должно быть включено. – Jens Gustedt 20 March 2011 в 18:01_Bool
, а неbool
. правильно? – Nawaz 20 March 2011 в 18:06bool
/_Bool
, реляционные операторы в C производятint
, а неbool
. То есть даже в C99 реляционные операторы все еще производятint
. – AnT 20 March 2011 в 19:09