例如 label标签设置点击事件 转换成input
方案:因为不能直接修改标签名 所以换种思路,
- 新建个标签,
- 原标签属性值赋值给新标签,
- 移除原标签,
- 加上新标签
核心代码1 复制:
var old = document.getElementById(oldId);
var parent = old.parentNode;
var newObj = document.createElement(newType);
newObj.id = old.id;
newObj.name = old.name;
//其他自定义属性
核心代码2 移除旧标签,添加新标签
old.remove();
parent.appendChild(newObj);
核心代码3 添加新方法
//添加方式1
document.getElementById(oldId).onblur = function(){//为新的input添加事件:失去焦点后变成label。看情况使用,本实例需要用到
change(oldId,newType,oldType);
};
//添加方式2
if (window.addEventListener) {
//其它浏览器的事件代码: Mozilla, Netscape, Firefox
//添加的事件的顺序即执行顺序
//注意用 addEventListener 添加带on的事件,不用加on
document.getElementById(oldId).addEventListener('blur', change(oldId,newType,oldType), false);
} else {
//IE 的事件代码 在原先事件上添加 add
document.getElementById(oldId).attachEvent('onBlur', change(oldId,newType,oldType));//为新的input添加事件:失去焦点后变成label。看情况使用,本实例需要用到
}