JS动态创建图片及热区

octopusfly 2011-06-27 03:00:46
利用JS在指定的DIV中动态创建图片及相应的热区。图片自己找,用自己的图片,修改热区坐标。这里只写出实现方法。不废话,代码如下
JS部分

// MAP1名称
var mapName1 = "Map1";
// MAP1ID
var mapId1 = "MapId1";
// 指定DIV名称
var divnId = "mask";

// 图片路径
var imgPath = "";
/**
* 动态图片热点创建入口
* 参数:指定图片名称
*/
main = function(type) {
var obj;
switch(type) {
case "aa" :
// 指定图片及热点对象取得
obj = imgMapList[0];
// 创建图片及热点
creatImpAndHot(obj);
break;
}
}

/**
* 动态图片热点创建
* 参数:热点及图片对象
*/
creatImpAndHot = function(hotObj) {
/** 热区设置 */
// 创建热点MAP对象
var map = document.createElement("Map");
// 设置MAP名称
map.name = mapName1;
// 设置MAPID
map.id = mapId1;
// 热点列表取得
var length = hotObj.map.length;
for (var i = 0; i < length; i++) {
var tempMap = hotObj.map[i];
// 创建热区对象
area = document.createElement("area");
// 设置热区类型
area.shape = tempMap.shape;
// 设置热区坐标
area.coords = tempMap.coords;
// 设置热区对应链接
area.href = tempMap.href;
// 设置热区对应事件
area.onclick = tempMap.onclick;
// 设置热区id
area.id = tempMap.id;
// 向MAP中追加热区对象
map.appendChild(area);
}

/** 图片设置 */
// 创建图片对象
var img = document.createElement("img");
// 图片ID
img.id = hotObj.img.id;
// 设置图片链接
img.src = hotObj.img.imgName;
// 设置图片对应热区MAP
img.useMap="#" + mapName1;
// 设置图片尺寸
img.width = hotObj.img.width;
img.height = hotObj.img.height;
// 边框
img.border = "0";
// 设置图片ID
img.id = hotObj.id;

// 清空指定DIV内容
document.getElementById(divnId).innerHTML = '';
// 向DIV区添加MAP对象
document.getElementById(divnId).appendChild(map);
// 向DIV区添加图片对象
document.getElementById(divnId).appendChild(img);
}

/**
* 动态图片热点点击后事件
*/
testClick = function() {
alert();
}

/**
* 创建图片信息及热点信息列表
*/
creatImgAndMap = function(){
var tempArray = new Array();
/** 影射1 */
var tempObj = new Object();
/** 图片信息 */
// 图片ID
tempObj.img = new Object();
tempObj.img.id = "test1";
// 图片名称(只要图片名称,路径由公共变量设置)
tempObj.img.imgName = "113.jpg";
// 设置图片尺寸
tempObj.img.width = "640";
tempObj.img.height = "200";

/** 热区信息 */
var tempMap;
tempObj.map = new Array();
// 热点1
tempMap = new Object();
// 热区ID
tempMap.id = "test1_hot1"
// 类型
tempMap.shape = "rect";
// 热区坐标
tempMap.coords = "159,167,238,191";
// 链接
tempMap.href = "#";
// 单击事件
tempMap.onclick = testClick;
// 添加到列表中
tempObj.map[0] = tempMap;
// 热点2
tempMap = new Object();
// 热区ID
tempMap.id = "test1_hot2"
// 类型
tempMap.shape = "rect";
// 热区坐标
tempMap.coords = "147,7,286,33";
// 链接
tempMap.href = "#";
// 单击事件
tempMap.onclick = testClick;
// 添加到列表中
tempObj.map[1] = tempMap;

// 将图片及相应热区信息添加到列表中
tempArray[0] = tempObj;

return tempArray;
};

// 热点映射
var imgMapList = creatImgAndMap();


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script type="text/javascript" src="img.js" ></script>
<script type="text/javascript">
function abc(){
main("aa");
}
</script>
</head>

<body>
<div id="mask">
<input type="button" value="set" onClick="abc()">
</div>
</body>
</html>

...全文
1104 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
弄不清是提问还是分享。
如果是分享,楼主发帖时需要标明一下,“[分享]……”,以和一般的问题帖区分开来。
不要觉得你的方式一看就能让别人明白是分享,很多不懂如何提问的人也都这么直接“不废话,上代码”。
wdj_1984 2011-09-12
  • 打赏
  • 举报
回复
确实没有反应
crystal8700 2011-08-01
  • 打赏
  • 举报
回复
我把你的代码弄到MYECLIPSE上面运行,怎么没效果呢?我先建立一个JS文件,然后再写一个JSP文件,在JSP文件里面引用了JS文件,然后一运行后,页面上会出现一个SET按钮,点开按钮后会出现一幅图片,接着点击图像上的点,就没有反应了。不知道是为什么???
itliyi 2011-06-27
  • 打赏
  • 举报
回复
挨踢直男 2011-06-27
  • 打赏
  • 举报
回复
piaolankeke 2011-06-27
  • 打赏
  • 举报
回复
不错,mark
灬上海爽爷 2011-06-27
  • 打赏
  • 举报
回复
楼主V587,JF
内容概要:本文围绕基于三重移相控制(TPS)的双有源桥(DAB)高频隔离DC-DC变换器开展系统性研究,重点构建了其在Simulink环境下的高精度仿真模型。研究全面涵盖SPS单相移相、DPS双重重移相与TPS三重移相等多种控制策略的建模、实现与性能对比,深入分析不同模式下变换器的功率传输特性、软开关实现条件及功率回流问题,旨在提升DAB在交直流混合微电网、能量路由器、多端口柔性互联装置等场景中的转换效率与动态响应能力。通过对ZVS(零电压切换)条件的精确控制与移相角参数的优化,有效降低了开关损耗,增强了系统整体能效与运行稳定性。该仿真模型具有良好的可扩展性,适用于复杂电能转换系统的科研验证与工程开发。; 适合人群:电力电子、电气工程及其自动化等相关专业的硕士研究生、博士生、科研人员以及从事新能源变换器、柔性输配电系统设计的工程技术人员。; 使用场景及目标:①掌握双有源桥DAB变换器的基本工作原理及其在高频隔离场合的核心优势;②深入理解三重移相控制策略的设计机理、控制自由度分配及其在效率优化中的关键作用;③构建并调试可用于科研论文撰写、项目申报或实际系统验证的高保真Simulink仿真模型,支撑理论分析与实验对比。; 阅读建议:建议结合MATLAB/Simulink平台进行动手实践,重点关注主电路拓扑搭建、移相控制模块设计、驱动信号时序配置及ZVS实现条件的仿真观测,推荐通过对比SPS、DPS与TPS三种模式的稳态与动态响应曲线,深入掌握各控制策略的适用边界与优化方向。
【重要提示】本资源设置为0积分下载,若非0积分请勿轻易下载 亲爱的CSDN用户: 首先感谢你点进这个资源页面。我需要提前说明一个重要情况: 本资源原本已设置为“0积分下载”,即作者希望完全免费共享。但CSDN平台有时会根据文件的下载热度、文件大小、用户权限等因素,自动将部分资源的积分调整为非0数值(如1积分、2积分、5积分等)。这是平台系统的自动行为,而非作者本人的设定。 因此,如果你当前看到该资源的下载所需积分不是0(例如显示为1、2、3……),请谨慎决定是否下载。 如果你按照非0积分支付并下载后发现资源内容不符合预期、链接失效,或者实际上该资源本应是免费的,作者无法为此承担积分损失或退还操作。强烈建议:仅在页面显示为0积分时进行下载。 另外,本资源描述中并未直接提供具体的下载地址或外部链接,因为它本身是一个通过CSDN官方上传通道提交的文件/内容包。如果你看到描述中没有外部网盘地址,这是正常的——资源文件应通过CSDN内置的“下载”按钮获取。若因平台积分显示异常导致你支付了积分,请优先联系CSDN客服咨询积分退还政策,作者没有权限修改平台自动设定的积分值。 感谢你的理解与支持。技术分享本应开放,但受限于平台规则,特此提醒如上。祝学习进步!

87,990

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧