У меня есть следующая функция, которая работает как чемпион:

//To find the position of an element function getPosition(el) { var xPos = 0; var yPos = 0; while (el) { if (el.tagName == "BODY") { // deal with browser quirks with body/window/document and page scroll var xScroll = el.scrollLeft || document.documentElement.scrollLeft; var yScroll = el.scrollTop || document.documentElement.scrollTop; xPos  = (el.offsetLeft - xScroll   el.clientLeft); yPos  = (el.offsetTop - yScroll   el.clientTop); } else { // for all other non-BODY elements xPos  = (el.offsetLeft - el.scrollLeft   el.clientLeft); yPos  = (el.offsetTop - el.scrollTop   el.clientTop); } el = el.offsetParent; } return { x: xPos, y: yPos }; } 

поэтому, когда я вызываю getPosition, я получаю числа в виде такого объекта:

 {amp}gt;{x: 200, y: 500} 

Теперь у меня есть другая функция, которую я создаю для запуска события с определенной позицией, но я не могу назвать правильный номер getPosition … Я перепробовал десятки вариантов, конечно, я что-то здесь упускаю. Ниже приведена простая функция, показывающая, как я называю номер позиции неверно:

 function test () { console.log(getPosition(img));//An image - getPosition identify it to be at {x:200,y:500} if (getPosition(img) == (200,500)){ console.log('It is there!') } else { console.log('it is not there!') } }; 

Я также пробовал между другими вариантами это:

 function test () { console.log(getPosition(img)); var x = 200; var y = 500; if (getPosition(img) == {x,y}){ console.log('It is there!') } else { console.log('it is not there!') } }; 

и это:

 function test () { console.log(getPosition(img)); if (getPosition(img) == {x: 200,y: 500}){ console.log('It is there!') } else { console.log('it is not there!') } }; 

Таким образом, я получаю только «это не так!», Я пробовал много разных способов найти способ сравнения без успеха.

Есть идеи, что я делаю не так?

Функция getPosition() возвращает объект. Таким образом, вы должны проверить, что объекты x и y свойства, чтобы убедиться, что они соответствуют тому, что вы хотите.

Самый простой способ — просто проверить x и y отдельно в операторе if . Похоже, это то, что вы пытались сделать, но вы просто немного отключили синтаксис, пытаясь проверить свойства x и y все в одном операторе.

 //To find the position of an element function getPosition(el) { var xPos = 0; var yPos = 0; while (el) { if (el.tagName == "BODY") { // deal with browser quirks with body/window/document and page scroll var xScroll = el.scrollLeft || document.documentElement.scrollLeft; var yScroll = el.scrollTop || document.documentElement.scrollTop; xPos  = (el.offsetLeft - xScroll   el.clientLeft); yPos  = (el.offsetTop - yScroll   el.clientTop); } else { // for all other non-BODY elements xPos  = (el.offsetLeft - el.scrollLeft   el.clientLeft); yPos  = (el.offsetTop - el.scrollTop   el.clientTop); } el = el.offsetParent; } return { x: xPos, y: yPos }; } test() function test() { var img = document.getElementById("the-image"); console.log(getPosition(img)); var imageLocation = getPosition(img); if (imageLocation.x === 8 {amp}amp;{amp}amp; imageLocation.y === 22) { console.log('It is there!') } else { console.log('it is not there!') } }; 
 {amp}lt;img id="the-image" src=""/{amp}gt;