Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/71.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 切换html IMG元素';使用JS的s类(无Jquery)_Javascript_Html_Css_Image - Fatal编程技术网

Javascript 切换html IMG元素';使用JS的s类(无Jquery)

Javascript 切换html IMG元素';使用JS的s类(无Jquery),javascript,html,css,image,Javascript,Html,Css,Image,我放弃。。。你所有的答案都只是针对当地元素的不同方式 如果你费心去读我说的话,你会意识到这不是我已有的代码的问题,只是代码在IMG标签上不起作用 当我四处闲逛试图证明我的问题时(并且你的解决方案没有一个与已经发生的事情有任何不同),我发现我可以通过对每个图像上的DIV元素应用灰度过滤器来实现我想要的效果。mouseover事件会触发DIV元素中的不透明度更改 这是一个有点重,我想,但它回答了我的实际问题。答案是: 是的,可能有一种切换IMG标记类的方法。但是不,如果没有引起争论或者被告知我使用的

我放弃。。。你所有的答案都只是针对当地元素的不同方式

如果你费心去读我说的话,你会意识到这不是我已有的代码的问题,只是代码在IMG标签上不起作用

当我四处闲逛试图证明我的问题时(并且你的解决方案没有一个与已经发生的事情有任何不同),我发现我可以通过对每个图像上的DIV元素应用灰度过滤器来实现我想要的效果。mouseover事件会触发DIV元素中的不透明度更改

这是一个有点重,我想,但它回答了我的实际问题。答案是:

是的,可能有一种切换IMG标记类的方法。但是不,如果没有引起争论或者被告知我使用的是“坏代码”,我可能不会在这里找到它。因此,以DIV元素为目标更容易、更有效

顺便说一下,页面加载时间与数据包的大小有关。较大的数据包(图像、html/css/js文档等)下载时间较长,因此页面加载时间较长。我试图创建的网站证明了这一论点,我有一个几乎完整(几乎)功能齐全的网站,有大量“聪明”的小效果,都在20mb以下,其中大约15mb是图像。这个网站干净简单,位于我的三星Galaxy Tab 4(使用木瓜)上,几乎可以立即加载


这就是我所说的“我希望这是非常精简的”。谢谢大家的帮助,很遗憾我没能让任何人明白发生了什么事。

你在问题中提到的是

onClick="colorFunction(image1)"
一个内联的javascript事件监听器

如果是,请尝试将其替换为:

onClick="colorFunction(this)"
然后将
colorFunction()
重写为:

function colorFunction(image) {
    image.classList.toggle('thumb-color');
}

你在问题中提到的是什么

onClick="colorFunction(image1)"
一个内联的javascript事件监听器

如果是,请尝试将其替换为:

onClick="colorFunction(this)"
然后将
colorFunction()
重写为:

function colorFunction(image) {
    image.classList.toggle('thumb-color');
}

如果将
onClick
添加到图像元素,则不需要传递任何内容,您将收到包含所有信息的
MouseEvent
。您需要来自事件的
目标

我建议不要在元素上使用
onClick
,因为它不可伸缩,您必须将它添加到所有元素中。最好将监听器添加到包装/容器元素中,然后通过某些属性筛选目标,例如
数据某物
请检查

因此,您有包装元素和图像:

<div class="images-container">
  <img src="https://placeholdit.imgix.net/~text?txtsize=33&txt=350%C3%97150&w=350&h=150" data-toggleable class="thumb-gray thumb-color" />
  <img src="https://placeholdit.imgix.net/~text?txtsize=33&txt=350%C3%97150&w=350&h=150" data-toggleable class="thumb-gray" />
  <img src="https://placeholdit.imgix.net/~text?txtsize=33&txt=350%C3%97150&w=350&h=150" data-toggleable class="thumb-gray" />
</div>
同样的代码可以扩展为支持
mouseover
mouseout
。检查。只有一种功能可以统治他们,并在黑暗中约束他们

var imagesContainerEl = document.querySelector('.images-container');

imagesContainerEl.addEventListener('mouseover', onToggleImage);
imagesContainerEl.addEventListener('mouseout', onToggleImage);


function onToggleImage(event) {
    var element = event.target;
    if (element.hasAttribute('data-toggleable')) {
      element.classList.toggle('thumb-color');
  }
}

还更新了显示如何使图像灰度/颜色的内容,如果您将
onClick
添加到图像元素,则无需传递任何内容,您将收到包含所有信息的
MouseEvent
。您需要来自事件的
目标

我建议不要在元素上使用
onClick
,因为它不可伸缩,您必须将它添加到所有元素中。最好将监听器添加到包装/容器元素中,然后通过某些属性筛选目标,例如
数据某物
请检查

因此,您有包装元素和图像:

<div class="images-container">
  <img src="https://placeholdit.imgix.net/~text?txtsize=33&txt=350%C3%97150&w=350&h=150" data-toggleable class="thumb-gray thumb-color" />
  <img src="https://placeholdit.imgix.net/~text?txtsize=33&txt=350%C3%97150&w=350&h=150" data-toggleable class="thumb-gray" />
  <img src="https://placeholdit.imgix.net/~text?txtsize=33&txt=350%C3%97150&w=350&h=150" data-toggleable class="thumb-gray" />
</div>
同样的代码可以扩展为支持
mouseover
mouseout
。检查。只有一种功能可以统治他们,并在黑暗中约束他们

var imagesContainerEl = document.querySelector('.images-container');

imagesContainerEl.addEventListener('mouseover', onToggleImage);
imagesContainerEl.addEventListener('mouseout', onToggleImage);


function onToggleImage(event) {
    var element = event.target;
    if (element.hasAttribute('data-toggleable')) {
      element.classList.toggle('thumb-color');
  }
}

还更新了显示如何制作图像灰度/颜色的内容

从JS引用它时,无论它是div还是img元素都不会有任何区别,但无论哪种方式,都不需要任何JS,只需CSS即可实现悬停效果。话虽如此,请尝试
onClick=“colorFunction(this)”。我也会这么想,但显然这不适用于IMG元素。我会试着把它录下来,然后上传到YouTube或者其他什么地方,真奇怪!我不知道你能用CSS编码鼠标悬停的过渡效果?IMG元素并没有什么神奇之处。忘记YouTube,更新你的问题以显示你的实际代码(而不是代码< OnCase=…./Case>隔离部分——它是IMAG标签中的属性,或者……并且考虑提供问题的演示。问题不是它将工作或不工作于图像,您传递给OnCutter处理器的引用是错误的。解决方案在于找出如何正确地传递I。mg元素作为onclick函数的参数。IE引入了一个坏习惯,即从具有id属性的元素中自动创建全局变量(出于兼容性的原因,一些浏览器随后会复制)–但这并不意味着它是正确的。因此,代码中没有名为
image1
的变量可用,因此
未定义的
会被传递到函数中,从而导致您看到的错误。您可以使用
直接传递元素,或者需要将id作为字符串值传递,然后使用
document.getElementById
在函数中获取对元素的引用。从JS引用它的角度来看,它是div还是img元素应该没有任何区别,但是无论哪种方式,你都不需要任何JS,你可以只使用CSS来实现悬停效果。说到这里,请尝试
onClick=“colorFunction(this)”
。我也会这么想,但显然这不适用于IMG元素。我会尝试记录它发生的情况并上传到YouTube或其他地方,这太奇怪了!我不知道你可以用CSS编码鼠标悬停效果?IMG元素没有任何魔力。忘记YouTube,更新你的问题以显示你的想法实际代码(而不是代码< OnCase=…./Case>隔离部分——它是IMAG标记中的属性,或者……并考虑提供问题的演示)。问题是N。