これが機能しない理由はありますか?
var xcurrent = parseInt(window.document.getElementById('firstdiv').style.left);
var ycurrent = parseInt(window.document.getElementById('firstdiv').style.top);
整数のNaNではないと言われています。
これが機能しない理由はありますか?
var xcurrent = parseInt(window.document.getElementById('firstdiv').style.left);
var ycurrent = parseInt(window.document.getElementById('firstdiv').style.top);
整数のNaNではないと言われています。
u— — n—e—e—d— —t—o——r—e—m—o—v—e————f—r—o—m——t—h—e——s—t—r—i ̶p̶x̶
—n—g—(最近のブラウザでは関係ありません)
window.document.getElementById('firstdiv').style.left
定義されていることを確認してください。CSSでのみ定義されている場合、このプロパティにアクセスすることはできません
例:
JSとインラインCSSで定義されたスタイルのみがJSで読み取り可能です。
それが機能していないわけparseInt
ではなく、NaN
参照しようとしている要素が整数として解釈できないことを示唆しています。確かに言うのは難しいですが、参照している要素が実際に存在することを確認し、それらを操作する前にそれらにアクセスできるかどうかを確認してください。つまりwindow.document.getElementById('firstdiv')
、それを使ってこれ以上やろうとする前に、何かが得られることを確認してください。
また、cssが取得しようとしている属性を実際に設定していることを確認する必要があります。そうしないと、undefined
/Nan
エラーが発生します。
要素のx位置とy位置を取得しようとしている場合は、代わりにoffsetLeft
andを使用できますoffsetTop
。
var firstDiv = document.getElementById('firstdiv');
var xcurrent = firstDiv.offsetLeft;
var ycurrent = firstDiv.offsetTop;
offsetParent
これにより、CSSポジショニングで設定されたかどうかに関係なく、xとyの位置(に関して)が取得されます。
これが機能しない理由はありますか?
var xcurrent = parseInt(window.document.getElementById('firstdiv')。style.left);
かなりの数ですが、可能性の高いものは次のとおりです。
IDが「firstdiv」の要素が存在しない場合は、window.document.getElementById('firstdiv')
を返しnull
ます。のstyleプロパティにアクセスしようとするとnull
、エラーがスローされます。しかし、それはあなたが指定した結果ではありません。
によって返される値は.style.left
空の文字列です。その場合、parseIntNaN
はECMA-262に従って戻ります。
より安全なアプローチは次のとおりです。
var el = document.getElementById('firstdiv');
var xcurrent
if (el) {
xcurrent = parseInt(el.style.left);
if (isNaN(xcurrent)) {
// there was no value for xcurrent, what now?
ネイサンが言ったように、代わりにoffsetLeftを使用できます。