0

これが機能しない理由はありますか?

 var xcurrent = parseInt(window.document.getElementById('firstdiv').style.left);
 var ycurrent = parseInt(window.document.getElementById('firstdiv').style.top);

整数のNaNではないと言われています。

4

4 に答える 4

2

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で読み取り可能です。

于 2012-09-12T23:33:42.557 に答える
2

それが機能していないわけparseIntではなく、NaN参照しようとしている要素が整数として解釈できないことを示唆しています。確かに言うのは難しいですが、参照している要素が実際に存在することを確認し、それらを操作する前にそれらにアクセスできるかどうかを確認してください。つまりwindow.document.getElementById('firstdiv')、それを使ってこれ以上やろうとする前に、何かが得られることを確認してください。

また、cssが取得しようとしている属性を実際に設定していることを確認する必要があります。そうしないと、undefined/Nanエラーが発生します。

于 2012-09-12T23:37:03.580 に答える
2

要素のx位置とy位置を取得しようとしている場合は、代わりにoffsetLeftandを使用できますoffsetTop

var firstDiv = document.getElementById('firstdiv');
var xcurrent = firstDiv.offsetLeft;
var ycurrent = firstDiv.offsetTop;

offsetParentこれにより、CSSポジショニングで設定されたかどうかに関係なく、xとyの位置(に関して)が取得されます。

于 2012-09-13T00:00:59.913 に答える
1

これが機能しない理由はありますか?

var xcurrent = parseInt(window.document.getElementById('firstdiv')。style.left);

かなりの数ですが、可能性の高いものは次のとおりです。

  1. IDが「firstdiv」の要素が存在しない場合は、window.document.getElementById('firstdiv')を返しnullます。のstyleプロパティにアクセスしようとするとnull、エラーがスローされます。しかし、それはあなたが指定した結果ではありません。

  2. によって返される値は.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を使用できます。

于 2012-09-13T00:15:52.820 に答える