Ваш основной подход был прав, проблемы были такие вещи, как это:
Вместо square1.left
, вы хотите square1.offsetLeft
. Элементы не имеют свойства left
. То же самое касается top
, width
и height
.
Вместо document.getElementById("square2")
вам нужно выбрать элемент по имени класса, так как нет элемента с этим идентификатором (только элемент с этим классом).
Вы звоните changecouleur
, но вы, вероятно, хотели бы позвонить colorswap
. Похож на немного незавершенного рефакторинга.
Вы также не нужны какие-либо из дополнительных проверок после этого:
if (bl > ar || br < al) {
return false;
} //overlap not possible
if (bt > ab || bb < at) {
return false;
} //overlap not possible
Если ни одно из этих условий истинно, то они должны перекрывать друг друга.
http://jsbin.com/iFAlIyIv/13/edit
возможно дубликат [Столкновения Javascript между двумя квадратами] (http://stackoverflow.com/questions/20283616/collisions-javascript-between-two-squares) – Tibos
Нет, это еще одна проблема ... – user3048878
Ну, вопрос, который я связал (который вы попросили и теперь убрал), содержал совершенно хороший ответ о том, как обнаружить столкновение. Чтобы изменить цвет, вы можете просто сделать 'square1.style.backgroundColor = '# FFFF00'' // желтый. – Tibos