经过修改的 javascript 示例不起作用

标签 javascript

我得到了一个“制作移动的图层”的 javascript 示例代码,并修改了左右移动的函数,创建了以下代码(我对修改后的行进行了注释,以便您可以看到它是如何实现的):

<html>
<head>
<title>JavaScript Radio Example</title>
<script language=javascript type="text/javascript">

//var x=10;

function moveRight( )
{
        var layerElement = document.getElementById("layer2");
        //x+=10;
        //layerElement.style.left=x;
        layerElement.style.left += 10;
}

function moveLeft( )
{
        var layerElement = document.getElementById("layer2");
        //x-=10;
        //layerElement.style.left=x;
        layerElement.style.left -= 10;
}


</script>
</head>

<body>
<style type="text/css">

#layer1 {
background-color: yellow;
position: absolute;
height:90px;
width:90px;
left:0px;
top:100px;
}

#layer2 {
background-color: red;
position: absolute;
height:90px;
width:90px;
left:10px;
top:100px;
}

</style>

<p id="layer1">This is layer 1</p>
<p id="layer2">This is layer 2</p>

<form action="" name="orderForm">
<input type="BUTTON" value="Move Left" onClick="moveLeft()" />
<input type="BUTTON" value="Move Right" onClick="moveRight()" />
</form>

</body>
</html>

现在,为什么修改后不起作用?

最佳答案

尝试在 js 调试器中运行它,例如 Firebug 。我得到:

>>> var layerElement = document.getElementById("layer2")
>>> layerElement
<p id="layer2" style="left: 130px;">
>>> layerElement.style.left
"130px"
>>> layerElement.style.left -= 10
NaN

请注意,layerElement.style.left 的值是一个字符串“130px”。难怪当我们尝试从中减去 10 时,我们会得到 NaN。

旧代码有效的原因是,当你赋值时,js 显然会发挥一些魔力

layerElement.style.left = x

将 x 转换为具有尺寸单位的字符串。

关于经过修改的 javascript 示例不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3576173/

相关文章:

javascript - MongoDB findOne 在 Node.js 应用程序中第二次失败...连接到 : mongodb://时出错

javascript - Vue js在选择另一个时保留下拉值

javascript - 强制 Jquery 图标位于按钮中心

javascript - 为什么 Canvas 的撤消功能不起作用?

javascript - ES6 做 for of get prototype values - 如何检查 hasownproperty

javascript - ngRepeat - 首先按特定键对对象进行排序

javascript - 事件处理程序命名的 Backbone.js 最佳实践

php - 单击带有 JavaScript 的链接

javascript - websocket 客户端发现服务器

javascript - React Native JS 问题