单击时更改按钮中的图像

2023-12-29

我有一个按钮,里面有一个图像,我想在单击时交换该图像。我已经使该部分正常工作,但现在我还希望它在再次单击时变回原始图像。

我正在使用的代码:

<button onClick="action();">click me<img src="images/image1.png" width="16px" id="ImageButton1"></button>

和 JavaScript:

function action() {
  swapImage('images/image2.png');
};

var swapImage = function(src) {
  document.getElementById("ImageButton1").src = src;
}

提前致谢!


当你could使用全局变量,您不需要。当您使用 setAttribute/getAttribute 时,您添加了一些在 HTML 中显示为 attrib 的内容。您还需要注意,添加全局变量只是将变量添加到窗口或导航器或文档对象(我不记得是哪个)。

您还可以将其添加到对象本身(即,作为一个变量,如果查看 html,则该变量不可见,但如果您在调试器中将 html 元素视为对象并查看其属性,则该变量可见。)

这里有两个选择。 1 以使其在 html 中可见的方式存储替代图像,而另一个则不然。

<!DOCTYPE html>
<html>
<head>
<script>
function byId(e){return document.getElementById(e);}

window.addEventListener('load', mInit, false);

function mInit()
{
    var tgt = byId('ImageButton1');
    tgt.secondSource = 'images/image2.png';
}

function byId(e){return document.getElementById(e);}

function action() 
{
    var tgt = byId('ImageButton1');
    var tmp = tgt.src;
    tgt.src = tgt.secondSource;
    tgt.secondSource = tmp;
};

function action2()
{
    var tgt = byId('imgBtn1');
    var tmp = tgt.src;
    tgt.src = tgt.getAttribute('src2');
    tgt.setAttribute('src2', tmp);
}
</script>
<style>
</style>
</head>
<body>
    <button onClick="action();">click me<img src="images/image1.png" width="16px" id="ImageButton1"></button>
    <br>
    <button onClick="action2();">click me<img id='imgBtn1' src="images/image1.png" src2='images/image2.png' width="16px"></button>
    </body>
</html>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

单击时更改按钮中的图像 的相关文章

随机推荐

  • 如何让 VS2010 识别 SpecFlow 生成的 mstest?

    我已将 Specflow 配置为以 MsTest 框架 而不是 NUnit 为目标 方法是在 specs 类库的 app config 中指定它
  • xjc 绑定自定义在 jaxb 2.1.3 中不起作用。它适用于 jaxb 2.0

    我在 JDK 1 6 0 中的 jaxb 2 0 中开发了一个绑定自定义文件 并且运行良好 现在我在 JDK 1 6 0 13 中使用 jaxb 2 1 3 它给了我错误 错误 xxx 出现在多个属性中 这就是绑定文件应该通过重命名它们来处
  • 违反完整性约束:1452 laravel

    我在 laravel 中有两个通过以下迁移创建的表 用户迁移 public function up Schema create users function table table gt increments id gt unsigned
  • 检查输入日期是否有效的 C 程序

    我被要求纠正一个程序 该程序检查用户输入的日期是否合法 我尝试编写它 但我猜逻辑不正确 Legitimate date include
  • 如何从表单上传 2GB 以上的大文件到 .NET Core API 控制器?

    通过 Postman 上传大文件时 从使用 php 编写的表单的前端 我遇到了同样的问题 我从 Azure Web App 收到一条 502 bad gateway 错误消息 502 Web 服务器在充当 Web 服务器时收到无效响应 网关
  • 如何将Spark Row的数据集转换为字符串?

    我已经编写了使用 SparkSQL 访问 Hive 表的代码 这是代码 SparkSession spark SparkSession builder appName Java Spark Hive Example master local
  • 保持图像的形式

    我做了2份表格 Form2 有设置背景图像的按钮 我懂了 this BackgroundImage new Bitmap Properties Resources 1334821694552 new Size 800 500 1334821
  • 为什么 glReadPixels 这么慢并且有其他选择吗?

    我需要在每一帧上截取屏幕截图 并且需要非常高的性能 我正在使用 freeGlut 我发现里面可以这样完成glutIdleFunc thisCallbackFunction GLubyte data GLubyte malloc 3 m sc
  • 未倾斜的孩子未对齐

    Note 这个问题是关于输出的问题 并且not关于创建任何形状 我最近创建了一个形状 prog position relative top 20px width 150px height 120px background green dis
  • Linux中netstat和ss的区别?

    在Linux中 netstat命令告诉我们系统中活动套接字的信息 我明白那个netstat uses proc net tcp获取系统网络信息 Since netstat手册页说 netstat 已过时 因此我们应该使用 ss NOTE T
  • 为什么在使用 pshufb shuffle 作为半字节查找表之前需要屏蔽?

    这段代码来自https github com WojciechMula sse popcount blob master popcnt avx2 lookup cpp https github com WojciechMula sse po
  • title 属性中的撇号是响应中的 HTML 编码

    snippet publishedAt 2012 08 24T17 06 35 000Z channelId UCh6C5LG14uZKmwCgGxf nDQ title C line Dion I 39 m Alive Official
  • 在 ggplot 中,如何获得 stat_bin2d 的两个图例(“渐变”类型)?

    这里我有两个 簇 只有一个图例 如何获得具有两种不同颜色渐变的两个 密度 图例 我努力了group但它不起作用 以下代码生成了上图 library ggplot2 df lt data frame x c rnorm 1000 1 1 rn
  • RestKit - 发布对象并更新其属性

    我有一个使用 RestKit 和 Sinatra 支持的服务器的小应用程序 当我将用户对象发布到服务器时 服务器成功保存用户并以新创建用户的 json 表示形式进行响应 以下是在客户端创建用户的代码 User currentUser Use
  • 神经机器翻译模型预测相差一

    问题总结 在下面的示例中 我的 NMT 模型具有很高的损失 因为它正确预测target input代替target output Targetin 1 3 3 3 3 6 6 6 9 7 7 7 4 4 4 4 4 9 9 10 10 10
  • SQL Server 2008无法使用新创建的用户登录

    我正在使用 Windows Vista 但无法使用新创建的用户登录 我打开 SQL Server Management Studio 我通过右键单击 安全 gt 登录 来创建一个新的登录 检查 SQL Server 身份验证登录名 测试员密
  • Android 中的 System.out.println?

    有什么方法可以在 android studio 中查看我的打印报表而不显示时间和目录 当该文本占用如此多的空间时 它会非常分散注意力并且难以调试 在 Android Studio 的 Android Monitor 视图中 在版本 1 3
  • 何时在视图状态中保存变量?

    我在网上搜索了答案 发现大多数变量都保存在 page prerender 事件的视图状态中 然后变量的值在页面加载事件中被设置回来 但是 当我在预渲染或加载事件中将变量保存在视图状态中时 视图状态在代码隐藏中动态更改后如何存储该变量的值 假
  • 为多个类型变量定义约束

    在我的代码库中 我有几种类型 它们具有不同数量的类型变量 例如 考虑 data MyType a b c data MyOtherType a b c d e 然后我使用这些类型定义函数 并且我想要求每个类型变量都是Show 为了避免太多重
  • 单击时更改按钮中的图像

    我有一个按钮 里面有一个图像 我想在单击时交换该图像 我已经使该部分正常工作 但现在我还希望它在再次单击时变回原始图像 我正在使用的代码