我在页面加载时使用以下代码调用.css()函数:

$(function(){

var positionLeft = parseInt($(".wrapper").css("margin-left"))-50;
if (isNaN(positionLeft)){
    console.log(positionLeft);
}

$("#full-wrapper").css("margin-left",(positionLeft+"px").toString());

});


由于某些原因,positionLeft始终为NaN。如果我使用setInterval(fn,1),并且仅在1毫秒后要求一个positionLeft,则positionLeft符合预期。这里发生了什么?

最佳答案

我认为您最终需要删除该.toString()函数并使其如下所示,因为您在这里实际上并不需要toString()-无论如何都可以工作:

$("#full-wrapper").css("margin-left", positionLeft+"px");


自己看看:



$(function() {

  var positionLeft = parseInt($(".wrapper").css("margin-left")) - 50;
  if (isNaN(positionLeft)) {
    console.log(positionLeft);
  }

  $("#full-wrapper").css("margin-left", positionLeft + "px");

});

.wrapper {
  margin-left: 150px;
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="wrapper">.wrapper</div>
<div id="full-wrapper">#full-wrapper</div>

09-19 01:19