2013-11-15 3 views
-1

코드 입력 here이 코드를 보면 div 태그의 왼쪽 좌표가 표시됩니다. http://jsfiddle.net/JuPA4/3/이 필요합니다. DIV 태그 좌표 가져 오기

$(function() { 
    var position = $("#red11").offset(); 
    $("#amount").val(position.left); 
}); 

는 (나는 마약 중독 포럼에 질문하고 지금 3 일간 아무 대답이 없었습니다)

Console error is (Uncaught TypeError: Cannot read property 'left' of undefined) not sure why as I can interact with the element!

블랙 도트 요소는 위의 코드를 게시 어떤 이유로 #black라는 div 태그 내에을 파일 hype에서 작동하지 않습니다. 나는 그것과 상호 작용할 수 있고 페이지에 데모를 추가하여 숨기기/표시를 클릭하여 점과 상호 작용할 수 있음을 알고 있습니다.

저는 Javascript로는 최고가 아니므로 아무도 아이디어가 없다면 도움을 받으실 수 있습니다.

결과적으로 left와 top의 좌표가 텍스트 입력으로 업데이트되어 데이터베이스에 배치 할 수 있습니다.

+0

Chrome에서 정상적으로 작동합니다. 어떤 브라우저? 다른 가능성은 너무 일찍 실행된다는 것입니까? dom이 끝나기 전에 그리기를 의미합니다. – mangr3n

+1

* Hype *이란 무엇입니까? * 검은 점 요소 * 무엇입니까? * Hide/Show *를 클릭하십시오. 귀하의 질문에서 많은 정보가 누락 된 것 같습니다 – Phil

+0

과대 광고 ??????????? – ssilas777

답변

1

어떤 요소와도 일치하지 않는 셀렉터에서 .offset()을 호출하면 undefined을 반환하며 선택기가 DOM에 "black"요소가 추가되기 전에 실행되는 것처럼 보입니다. 요소가 DOM에 추가 될 때까지 코드를 지연해야합니다.

해결 방법은 this question입니다. 그것은 DOM을 보는 방법을 보여줍니다.

아니면 그냥 요소까지 다시 시도 대기 및 시도 다음과 같은 무언가를 시도 할 수있다 : 심지어 (윈도우의로드 이벤트까지 코드를 지연하기에 충분 수도

<script> 
function executeWhenExists(selector, wait, callback) { 
    if ($(selector).length > 0) { 
     callback(); 
    } else { 
     setTimeout(function() { executeWhenExists(selector, wait, callback) }, wait); 
    } 
} 

$(function() { 
    executeWhenExists("#black", 1000, function() { 
     var position = $("#black").offset(); 
     $("#amount").val(position.left); 
    }); 
}); 
</script> 

문서의 준비 이벤트에서 실행되도록하는 것이 아니라). 그러면 다음과 같이 보입니다.

<script> 
$(window).on('load', function() { 
    var position = $("#black").offset(); 
    $("#amount").val(position.left); 
}); 
</script> 
+0

그 일을했지만 좌표가 지금 당신이 그것을 방해하는 자바 스크립트의 과장된 측면에서 뭔가 있어야합니다 검은 점을 이동하면 업데이 트되지 않습니다, 내 솔루션을 생각하는 단지 그것을 잘 지원하지 않습니다 마약을 드롭하는 것입니다 html 5 및 css3에서이 모든 작업을 직접 수행하십시오. 도움 주셔서 감사합니다. John, 많이 감사하겠습니다. – Kevin

+0

오늘 아침에 코드로 돌아가서 버튼 클릭시 함수를 호출하여 몇 분 내에 해결했습니다. 원래 자바 스크립트처럼 라이브로 업데이트하지는 않지만 합리적인 해결책입니다. – Kevin