javascript中使用setAttribute给属性赋值和直接赋值对比

javascript中使用setAttribute给属性赋值和直接赋值对比

直接po图和代码

下面是源代码

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>测试setAttribute用法</title>
<style type="text/css">
div {
background-color: #71C671;
border-radius:5px;
border:4px solid green;
}
</style>
<script type="text/javascript">
	
	//给文本框赋值
	function setInputNodeValue(){
		var inputNode = document.getElementById("input1");
		inputNode.size = 60;
		//节点.value这种写法,效果是,直接给节点赋值(不会给节点添加value属性)
		inputNode.value = "江西省赣州市于都县";
	}
	
	//给文本框赋值
	function setInput2NodeValue(){
		var input2Node = document.getElementById("input2");
		input2Node.setAttribute("size", "60");
		//节点.setAttribute("value", "")这种写法,效果是,不但给节点赋值,还会给节点添加value属性
		input2Node.setAttribute("value", "我的家乡在江西省赣州市于都县");
	}
</script>
</head>
<body>
<input type="button" onclick="setInputNodeValue()" value="点击我,给文本框赋值">
<input type="text" id="input1">
<br>
<input type="button" onclick="setInput2NodeValue()" value="点击我,给文本框赋值">
<input type="text" id="input2">
</body>
</html>

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 很抱歉,在HTML页面使用JavaScript赋值控件的value属性后,再使用`document.exeCommand("undo")`无法撤销是因为该命令仅支持文本编辑区域的撤销操作,不能用于撤销对HTML元素属性的修改。 如果您需要实现对控件value属性的撤销操作,您可以手动记录对该属性的修改并在需要撤销时进行回退。例如,可以使用一个数组保存每次修改的值,并在需要撤销时从数组取出上一个版本的值并重新赋值。 ### 回答2: 当给控件的value属性赋值后,使用document.exeCommand("undo")无法撤销的问题,是因为document.exeCommand("undo")只能撤销document对象的操作,而无法撤销控件的操作。 要解决这个问题,可以尝试以下几种方法: 1. 使用其他方法撤销操作:不使用document.exeCommand("undo"),而是使用其他方法来撤销操作,例如使用自定义的撤销功能函数来处理撤销操作。 2. 通过监听键盘事件来实现撤销:可以通过监听键盘事件来判断用户是否按下了撤销操作的快捷键,例如Ctrl+Z,然后在相应的事件处理函数手动实现对控件的撤销操作。 3. 使用逆向操作实现撤销:在给控件的value属性赋值之前,将当前的value值保存到一个变量,在需要撤销的时候,将保存的value值再次赋值给控件的value属性,从而达到撤销操作的效果。 4. 通过备份和还原控件的value属性来实现撤销:在给控件的value属性赋值之前,将当前的value值备份到一个变量,在需要撤销的时候,将备份的value值再次赋值给控件的value属性,从而达到撤销操作的效果。 需要注意的是,以上方法都需要针对具体的控件类型和操作进行相应的处理,具体的实现方式可能会略有差异。 ### 回答3: 遇到给控件的value属性赋值后,再使用document.exeCommand("undo")无法撤销的问题时,我可以采取以下的解决方案: 1. 使用自定义的撤销功能:在控件的value属性赋值之前,将当前的value值保存到一个变量,然后在需要撤销时,将该变量的值重新赋给value属性即可。 示例代码如下: ```javascript // 在给value属性赋值之前 var previousValue = document.getElementById("myInput").value; // 给value属性赋值 document.getElementById("myInput").value = "新的值"; // 在需要撤销时,重新赋值为之前的值 document.getElementById("myInput").value = previousValue; ``` 2. 使用其他方式修改控件的值:如果使用value属性赋值后无法撤销,可以尝试使用其他方式修改控件的值,比如使用innerText或innerHTML属性来修改输入框的文本内容,或者使用setAttribute方法来修改input元素的value属性值。这样在使用document.exeCommand("undo")时,就可以成功地撤销修改。 示例代码如下: ```javascript // 修改输入框的文本内容 document.getElementById("myInput").innerText = "新的值"; // 或者使用setAttribute方法修改value属性值 document.getElementById("myInput").setAttribute("value", "新的值"); ``` 通过采取以上的解决方案,就可以解决给控件的value属性赋值后,再使用document.exeCommand("undo")无法撤销的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值