gpt4 book ai didi

php - JavaScript 在使用 DOCTYPE 时失去图像移动功能

转载 作者:行者123 更新时间:2023-11-30 10:47:03 26 4
gpt4 key购买 nike

我这里有一个 JavaScript,可以让图像(幽灵)出现在屏幕上,飞来飞去,然后淡出,然后再重复。该脚本在我的文档中没有 DOCTYPE 的情况下工作得很好,但是如果我添加任何 DOCTYPE,则只有出现/消失有效。由于某种原因,它不会在屏幕上四处移动。我需要使用的 DOCTYPE 是:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

这让我发疯,我似乎无法弄清楚如何使其兼容。我只需要让运动部分与 DOCTYPE 一起工作。对此的任何帮助将不胜感激。下面是脚本:

if(!window.JSFX) JSFX=new Object();
JSFX.ghostImages = new Array(
"<img src='/ghost.png'>",
"<img src='/ghost2.png'>"
);
var ns4 = document.layers;
var ie4 = document.all;
JSFX.makeLayer = function(id)
{
var el = document.getElementById ? document.getElementById(id) :
document.all ? document.all[id] :
document.layers[id];
if(ns4) el.style=el;
el.sP=function(x,y){this.style.right = x;this.style.top=y;};
el.show=function(){ this.style.visibility = "visible"; }
el.hide=function(){ this.style.visibility = "hidden"; }
if(ns4 || window.opera)
el.sO = function(pc){return 0;};
else if(ie4)
el.sO = function(pc)
{
if(this.style.filter=="")
this.style.filter="alpha(opacity=100);";
this.filters.alpha.opacity=pc;
}
else
el.sO = function(pc)
{
this.style.opacity=pc/100;
}

return el;
}

if(window.innerWidth)
{
gX=function(){return innerWidth;};
gY=function(){return innerHeight;};
}
else
{
gX=function(){return document.body.width-50;};
gY=function(){return document.body.height-50;};
}
JSFX.ghostOutput=function()
{
for(var i=0 ; i<JSFX.ghostImages.length ; i++)
document.write(ns4 ? "<LAYER NAME='gh"+i+"'>"+JSFX.ghostImages[i]+"<\/LAYER>" :
"<DIV id='gh"+i+"' style='position:absolute'>"+JSFX.ghostImages[i]+"<\/DIV>" );

}
JSFX.ghostSprites = new Array();
JSFX.ghostStartAni = function()
{
for(var i=0 ;i<JSFX.ghostImages.length;i++)
{
var el=JSFX.makeLayer("gh"+i);
el.x=Math.random()*gX();
el.y=Math.random()*gY();
el.tx=Math.random()*gX();
el.ty=Math.random()*gY();
el.dx=-5+Math.random()*10;
el.dy=-5+Math.random()*10;
el.state="off";
el.op=0;
el.sO(el.op);
el.hide();
JSFX.ghostSprites[i] = el;
}
setInterval("JSFX.ghostAni()", 40);
}
JSFX.ghostAni = function()
{
for(var i=0 ;i<JSFX.ghostSprites.length;i++)
{
el=JSFX.ghostSprites[i];

if(el.state == "off")
{
if(Math.random() > .99)
{
el.state="up";
el.show();
}
}
else if(el.state == "on")
{
if(Math.random() > .98)
el.state="down";
}
else if(el.state == "up")
{
el.op += 2;
el.sO(el.op);
if(el.op==100)
el.state = "on";
}
else if(el.state == "down")
{
el.op -= 2;
if(el.op==0)
{
el.hide();
el.state = "off";
}
else
el.sO(el.op);
}

var X = (el.tx - el.x);
var Y = (el.ty - el.y);
var len = Math.sqrt(X*X+Y*Y);
if(len < 1) len = 1;
var dx = 20 * (X/len);
var dy = 20 * (Y/len);
var ddx = (dx - el.dx)/10;
var ddy = (dy - el.dy)/10;
el.dx += ddx;
el.dy += ddy;
el.sP(el.x+=el.dx,el.y+=el.dy);

if(Math.random() >.95 )
{
el.tx = Math.random()*gX();
el.ty = Math.random()*gY();
}

}
}
JSFX.ghostStart = function()
{
if(JSFX.ghostLoad)JSFX.ghostLoad();
JSFX.ghostStartAni();
}
JSFX.ghostOutput();
JSFX.ghostLoad=window.onload;
window.onload=JSFX.ghostStart;

这是一个没有 DOCTYPE 的页面上的脚本示例: http://boomansion.net/test.php

...以及带有 DOCTYPE 的页面上的示例(查看最底部): http://boomansion.net/test2.php

提前致谢!

最佳答案

您将 topleft 设置为 Numbers,但它们需要长度(非零长度必须有一个单位)。

当您添加 Doctype 时,浏览器:

  • 假设你知道自己在做什么
  • 更严格地遵循规范
  • (因此)彼此更加一致
  • (因此)将更多错误视为“要忽略的值”而不是“要自动修复的值”。

您可能想要 + "px"

关于php - JavaScript 在使用 DOCTYPE 时失去图像移动功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7706322/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com