Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 动态更改所有的样式<;img>;标签_Javascript_Html_Javascript Events_Css - Fatal编程技术网

Javascript 动态更改所有的样式<;img>;标签

Javascript 动态更改所有的样式<;img>;标签,javascript,html,javascript-events,css,Javascript,Html,Javascript Events,Css,我试图通过改变div中img标签的位置来模拟震动 我让它一次为一个img工作 有没有一种方法可以一次更改div中所有img标记的样式 这就是我目前正在做的事情 bird = document.createElement('img'); bird.setAttribute('src',birdie); bird.setAttribute('class', 'birdie'); bird.setAttribute('id', id); bird.setAttribute('onLoa

我试图通过改变div中img标签的位置来模拟震动

我让它一次为一个img工作

有没有一种方法可以一次更改div中所有img标记的样式

这就是我目前正在做的事情

    bird = document.createElement('img');
bird.setAttribute('src',birdie);
    bird.setAttribute('class', 'birdie');
bird.setAttribute('id', id);
bird.setAttribute('onLoad', 'shakeAll()');
map.appendChild(bird);
birds++;
if(birdmap[0] == 0){
    birdmap = [id];
}else{
    birdmap+=[,id];
}
此ShakeAll功能也适用于车身的过载

   function shakeAll(){
if (birdmap[0] == 0) return;
i = 1;
while(i <= birds){
    shakeIt(birdmap[i]);
    i++;
}

setTimeout("shakeAll()",initialSpeed);
}
函数shakeAll(){
如果(birdmap[0]==0)返回;
i=1;

while(i为所有要抖动的img指定一个公共类名。然后,用户而不是getElementById()返回一个具有特定类名的元素数组。然后使用循环来设置每个元素的动画


但是,如果希望所有img都设置动画,请使用或。为所有要抖动的img指定一个通用类名。然后,使用用户而不是getElementById()返回具有特定类名的元素数组。然后使用循环设置每个元素的动画


但是,如果您希望所有IMG都设置动画,请使用或。我无法确定您在代码中尝试执行的操作。以下代码显示了来回移动某些图像的基本方法:

// quadratic easing in/out - acceleration until halfway, then deceleration
// t = time into the animation
// d = duration of the total animation
// b = base value
// c = max change from base value (range)
var easeInOutQuad = function (t, b, c, d) {
    if ((t/=d/2) < 1) return c/2*t*t + b;
    return -c/2 * ((--t)*(t-2) - 1) + b;
};

var linearTween = function (t, b, c, d) {
    return c*t/d + b;
};

// cubic easing in/out - acceleration until halfway, then deceleration
var easeInOutCubic = function (t, b, c, d) {
    if ((t/=d/2) < 1) return c/2*t*t*t + b;
    return c/2*((t-=2)*t*t + 2) + b;
};


function shakeAll() {
    var container = document.getElementById("container");
    var imgs = container.getElementsByTagName("img");

    // save away original position
    for (var i = 0; i < imgs.length; i++) {
        imgs[i].basePos = parseInt(imgs[i].style.left, 10);
    }

    var numShakes = 0;
    var maxShakes = 10;
    var range = 100;
    var direction = 1;
    var duration = 300;   // ms
    var startTime = (new Date()).getTime();
    var deltas = [];

    function shakeImgs() {
        var now = (new Date()).getTime();
        var elapsed = Math.min(now - startTime, duration);
        var delta = Math.round(easeInOutQuad(elapsed, 0, range, duration));
        delta *= direction;
        for (var i = 0; i < imgs.length; i++) {
            var basePos = imgs[i].basePos;
            if (direction < 0) {
                basePos += range;
            }
            imgs[i].style.left = (basePos + delta) + "px";
        }
        if (now - startTime >= duration) {
            startTime = now;
            direction *= -1;
            ++numShakes;
        }
        if (numShakes < maxShakes) {
            setTimeout(shakeImgs, 10);
        }
    }

    shakeImgs();
}

获取容器对象,然后获取该容器中的所有图像对象。您可以在JSFIDLE中看到相应的HTML。该代码实现了一种定位方案,该方法在边缘减慢速度并在该范围中行得最快。其余的运动由变量de的初始值控制。在

shakeAll()
中声明。这些可以编辑,也可以更改以传递到函数中。

我真的不知道您试图在代码中执行什么操作。以下是一些代码,展示了来回移动某些图像的基本方法:

// quadratic easing in/out - acceleration until halfway, then deceleration
// t = time into the animation
// d = duration of the total animation
// b = base value
// c = max change from base value (range)
var easeInOutQuad = function (t, b, c, d) {
    if ((t/=d/2) < 1) return c/2*t*t + b;
    return -c/2 * ((--t)*(t-2) - 1) + b;
};

var linearTween = function (t, b, c, d) {
    return c*t/d + b;
};

// cubic easing in/out - acceleration until halfway, then deceleration
var easeInOutCubic = function (t, b, c, d) {
    if ((t/=d/2) < 1) return c/2*t*t*t + b;
    return c/2*((t-=2)*t*t + 2) + b;
};


function shakeAll() {
    var container = document.getElementById("container");
    var imgs = container.getElementsByTagName("img");

    // save away original position
    for (var i = 0; i < imgs.length; i++) {
        imgs[i].basePos = parseInt(imgs[i].style.left, 10);
    }

    var numShakes = 0;
    var maxShakes = 10;
    var range = 100;
    var direction = 1;
    var duration = 300;   // ms
    var startTime = (new Date()).getTime();
    var deltas = [];

    function shakeImgs() {
        var now = (new Date()).getTime();
        var elapsed = Math.min(now - startTime, duration);
        var delta = Math.round(easeInOutQuad(elapsed, 0, range, duration));
        delta *= direction;
        for (var i = 0; i < imgs.length; i++) {
            var basePos = imgs[i].basePos;
            if (direction < 0) {
                basePos += range;
            }
            imgs[i].style.left = (basePos + delta) + "px";
        }
        if (now - startTime >= duration) {
            startTime = now;
            direction *= -1;
            ++numShakes;
        }
        if (numShakes < maxShakes) {
            setTimeout(shakeImgs, 10);
        }
    }

    shakeImgs();
}

获取容器对象,然后获取该容器中的所有图像对象。您可以在JSFIDLE中看到相应的HTML。该代码实现了一种定位方案,该方法在边缘减慢速度并在该范围中行得最快。其余的运动由变量de的初始值控制。在

shakeAll()
中声明。这些可以编辑或更改以传递到函数中。

假设bird引用包含的html元素bird.getElementsByTagName(“img”)将为您提供一个图像元素数组。您使用js创建html元素有什么原因吗?就我个人而言,我会让生活变得更简单,并使用jquery。请参阅此stack overflow>有一些其他演示/类/库可能会有所帮助。根据需要,它甚至可能与Bounce函数一样简单。假设指包含的html元素bird.getElementsByTagName(“img”)将为您提供一个图像元素数组。您使用js创建html元素有什么原因吗?就我个人而言,我会让生活变得更简单,并使用jquery。请参阅此stack overflow>有一些其他演示/类/库可能会有所帮助。根据需要,它甚至可能与Bounce函数一样简单。这太棒了!G回答得好。这太棒了!回答得好。
var container = document.getElementById("container");
var imgs = container.getElementsByTagName("img");