建议扩展:移动块在Javascript中不起作用
注意:这是我刚才问的一个问题的延伸,我已经做了编辑并采纳了建议,但仍然没有运气 我试图制作一个网页,当你点击一个链接时,链接每100毫秒呈对角线移动一次 所以我有我的Javascript,但是现在当我点击链接时,什么都没有发生。我已经通过JSLint运行了我的代码(因此将COMAPRIONS更改为===而不是==,这在JS中很奇怪?)。但是,我从JSLink得到了这个错误: 错误:隐含全局:self 15,38,文档31 你认为我做错了什么建议扩展:移动块在Javascript中不起作用,javascript,html,css,Javascript,Html,Css,注意:这是我刚才问的一个问题的延伸,我已经做了编辑并采纳了建议,但仍然没有运气 我试图制作一个网页,当你点击一个链接时,链接每100毫秒呈对角线移动一次 所以我有我的Javascript,但是现在当我点击链接时,什么都没有发生。我已经通过JSLint运行了我的代码(因此将COMAPRIONS更改为===而不是==,这在JS中很奇怪?)。但是,我从JSLink得到了这个错误: 错误:隐含全局:self 15,38,文档31 你认为我做错了什么 <script LANGUAGE="JavaSc
<script LANGUAGE="JavaScript" type = "text/javascript">
<!--
var block = null;
var clockStep = null;
var index = 0;
var maxIndex = 6;
var x = 0;
var y = 0;
var timerInterval = 100; // milliseconds
var xPos = null;
var yPos = null;
function moveBlock()
{
if ( index < 0 || index >= maxIndex || block === null || clockStep === null )
{
self.clearInterval( clockStep );
return;
}
block.style.left = xPos[index] + "px";
block.style.top = yPos[index] + "px";
index++;
}
function onBlockClick( blockID )
{
if ( clockStep !== null )
{
return;
}
block = document.getElementById( blockID );
index = 0;
x = number(block.style.left); // parseInt( block.style.left, 10 );
y = number(block.style.top); // parseInt( block.style.top, 10 );
xPos = new Array( x+10, x+20, x+30, x+40, x+50, x+60 );
yPos = new Array( y-10, y-20, y-30, y-40, y-50, y-60 );
clockStep = self.SetInterval( moveBlock(), timerInterval );
}
-->
</script>
<style type="text/css" media="all">
<!--
@import url("styles.css");
#blockMenu { z-index: 0; width: 650px; height: 600px; background-color: blue; padding: 0; }
#block1 { z-index: 30; position: relative; top: 10px; left: 10px; background-color: red; width: 200px; height: 200px;
margin: 0; padding: 0; /* background-image: url("images/block1.png"); */ }
#block2 { z-index: 30; position: relative; top: 50px; left: 220px; background-color: red; width: 200px; height: 200px;
margin: 0; padding: 0; /* background-image: url("images/block1.png"); */ }
#block3 { z-index: 30; position: relative; top: 50px; left: 440px; background-color: red; width: 200px; height: 200px;
margin: 0; padding: 0; /* background-image: url("images/block1.png"); */ }
#block4 { z-index: 30; position: relative; top: 0px; left: 600px; background-color: red; width: 200px; height: 200px;
margin: 0; padding: 0; /* background-image: url("images/block1.png"); */ }
#block1 a { display: block; width: 100%; height: 100%; }
#block2 a { display: block; width: 100%; height: 100%; }
#block3 a { display: block; width: 100%; height: 100%; }
#block4 a { display: block; width: 100%; height: 100%; }
#block1 a:hover { background-color: green; }
#block2 a:hover { background-color: green; }
#block3 a:hover { background-color: green; }
#block4 a:hover { background-color: green; }
#block1 a:active { background-color: yellow; }
#block2 a:active { background-color: yellow; }
#block3 a:active { background-color: yellow; }
#block4 a:active { background-color: yellow; }
-->
</style>
对于初学者,self.setInterval和self.clearInterval没有在任何地方定义您可以使用jQuery或任何第三方libs吗?如果您使用jsfiddle.net,那也很好:-)您的意思是我应该删除self吗。部分因为我已经找到了很多关于这个函数的教程&这个@Mack:我想把“self”改为“window”……但这可能不是问题所在。您需要在此行的moveBlock()函数周围添加引号:clockStep=self.SetInterval('moveBlock()',timerInterval);