2016-04-27 29 views
0
var t = 0, i = 0; 
var letter = document.createElement('span') 
letter.id = "x" + t + "x" + i; 
letter.innerHTML = text[t]; 
highlight.appendChild(letter); 
var position = $("#" + "x" + t + "x" + i).position(); 

これはコードであり、文字が定義されていないと言っています。要素の位置をjavascriptとjqueryの親に追加した後の位置の取得方法は?

+0

IDは数字で始めることはできません。 – SLaks

+0

問題は、位置が改行のために更新されないということでした。 –

+1

HTML 5仕様では、IDは数字で始めることができます。 http://stackoverflow.com/questions/70579/what-are-valid-values-for-the-att-attribute-in-htmlを参照してください。 – cstopher

答えて

1

highlightが実際のDOMノード(定義されていない)で、textが既に定義されていると仮定すると、DOMがロードされる前にスクリプトが実行されている可能性が最も高いです。終了の直前にHTMLの一番下にスクリプトを入れてみてください。</body> -Tagここで

は、作業コードとフィドルです:https://jsfiddle.net/n9xk85b7/

+0

var text = ["ab"、 "cde"]; var hightlight = document.getElementById( 'highlight'); var t = 0、i = 0; var letter = document.createElement( 'span') letter.id = t + "x" + i; letter.innerHTML = "asdfasdfasdfasdfasdfasdfasdf
"; highlight.appendChild(letter); var letter = document.createElement( 'span') letter.id = t + "x" + i; letter.innerHTML = text [t]; highlight.appendChild(letter); var position = $( "#" + t + "x" + i).position(); document.getElementById( 'result')。innerHTML = "top:" + position.top + "、left:" + position.left; –

+0

別の追加要素によって改行が表示されるのを確認したら、右上のオフセットが得られません –

+0

私はappendを使用せずにinnerhtmlを使用すると –

関連する問題