我试图编写一些可以拍摄图像的Javascript(目前,它只是500x400的测试图像说"这是测试")并且每个都减小宽度时间间隔,给人一种旋转标志的印象;然后,当宽度达到零时,宽度再次增加,使其看起来像是再次打开。
我写了一些不整洁的代码,需要搞定;目前我只想努力工作,但是我工作有困难,任何人都可以帮忙吗?
<html>
<body>
<center>
<img src="sign.jpg" id="sign" width="500">
</center>
<script>
var decreasing=true;
var currentWidth=500;
var deltaWidth=5;
var myVar = setInterval(function(){ changeWidth() }, 500);
function changeWidth()
{
if( decreasing == true )
{
currentWidth=-deltaWidth;
document.getElementById("sign").width = currentWidth;
if( currentWidth<=0)
{
decreasing = false;
}
}
else
{
currentWidth=+deltaWidth;
document.getElementById("sign").width = currentWidth;
if( currentWidth>=500)
{
decreasing = true;
}
}
}
</script>
</body>
</html>
答案 0 :(得分:1)
您的操作员操作错误。 =-
和=+
应为-=
和+=
。
function changeWidth()
{
if( decreasing == true )
{
currentWidth -= deltaWidth;
// ...
}
}
答案 1 :(得分:0)
我可以在您的代码中看到两个问题。
i = i + 1
形式的代码,我将其缩短为i += 1
。 height
时,浏览器可能希望按比例调整width
的大小。以下代码有效:
var decreasing=true;
var currentWidth=500;
var deltaWidth=5;
var myVar = setInterval(function(){ changeWidth() }, 100);
function changeWidth()
{
document.getElementById("sign").height = 400;
if( decreasing == true )
{
currentWidth-=deltaWidth;
document.getElementById("sign").width = currentWidth;
if( currentWidth<=0)
{
decreasing = false;
}
}
else
{
currentWidth+=deltaWidth;
document.getElementById("sign").width = currentWidth;
if( currentWidth>=500)
{
decreasing = true;
}
}
}
<img id="sign" src="http://placehold.it/500x400" />
答案 2 :(得分:0)
您的运营商是错误的方式。将=-
更改为-=
,将=+
更改为+=
。另外,请考虑在图像上设置高度并加快间隔。这是工作解决方案的fiddle。
答案 3 :(得分:-1)
尝试使用setAttribute-Function更改属性。你可以用CSS3 Animate做这样的事情。
答案 4 :(得分:-1)
执行:
document.getElementById("sign").style.width = currentWidth + "px"
然后使用正确的CSS,以便像添加
一样调整图像max-width: 100%
到图像元素。
答案 5 :(得分:-1)