请老师看一下,并回答一个问题

来源:1-19 自由编程

96年的nash

2019-04-16 11:14:09

<!DOCTYPE html >

<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>jQuery练习</title>

<style type="text/css">
.div1{

	float: left;
	width: 50px;
	line-height: 30px;
	background-color: lightgray;
	margin-left: 10px;
	text-align: center;
	vertical-align: middle;
}
.div2{
	width: 300px;
	height: 300px;
	border: solid gray 1px;
	margin-top: 60px;
	color: red;
}
</style>


</head>
<body>
	<h2>请选择背景颜色</h2>
	<div>
	<div id="blue" class="div1">蓝色</div>
	<div id="green" class="div1">绿色</div>
	</div>
	<div class="div2" id="bg">
	</div>
	<div>输入颜色首字母: <input type="text" name="color"></div>
	<script type="text/javascript" src="js/jquery-3.3.1.js"></script>
	<script type="text/javascript">
		alert("欢迎来到设置颜色的页面");
		$("#blue").on("click",function(){
			//$(this).css({"color":"red"});
			$(".div2").text("蓝色背景");
			$(".div2").css("background-color","blue");
		});
		
		$("#green").on("click",function(){
			$(".div2").text("绿色背景");
			$(".div2").css({"background-color":"green","font-weight":"border","font-style":"italic"});
		});
		
		$("input[type='text']").keypress(function(event){
			console.log(event);
			if(event.keyCode==66){
				$(".div2").css("background-color","blue");
				$(".div2").text("");
			}
			
			else if(event.keyCode==71){
				$(".div2").css("background-color","green");
				$(".div2").text("");
			}
		})
	</script>
</body>
</html>

为什么直接用val清楚文本不行?

写回答

2回答

芝芝兰兰

2019-04-16

同学你好。jQuery提供了三个方法来设置或返回所选元素的内容:

1、text() - 设置或返回所选元素的文本内容,相当于包裹在闭合标签之间的字

2、html() - 设置或返回所选元素的内容(包括 HTML 标记)

3、 val() - 设置或返回表单字段的值value属性

同学没办法使用val()改变div2的原因是,div2本来就是没有value属性的。

即便使用了$(".div2").text("<p>蓝色背景</p>"); 写入的还只是文本,不会变为标签:

http://img.mukewang.com/climg/5cb5865c0001212711410550.jpg

所以这里除了同学的实现方式,还可以用下面方式实现:

<!DOCTYPE html >
 
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>jQuery练习</title>
 
<style type="text/css">
.div1{
 
    float: left;
    width: 50px;
    line-height: 30px;
    background-color: lightgray;
    margin-left: 10px;
    text-align: center;
    vertical-align: middle;
}
.div2{
    width: 300px;
    height: 300px;
    border: solid gray 1px;
    margin-top: 60px;
    color: red;
}
</style>
 
 
</head>
<body>
    <h2>请选择背景颜色</h2>
    <div>
    <div id="blue" class="div1">蓝色</div>
    <div id="green" class="div1">绿色</div>
    </div>
    <div class="div2" id="bg">
    </div>
    <div>输入颜色首字母: <input type="text" name="color"></div>
    <script type="text/javascript" src="js/jquery-3.3.1.js"></script>
    <script type="text/javascript">
        alert("欢迎来到设置颜色的页面");
        $("#blue").on("click",function(){
            //$(this).css({"color":"red"});
            $(".div2").html("<p>蓝色背景</p>");
            $(".div2").css("background-color","blue");
        });
         
        $("#green").on("click",function(){
            $(".div2").html("<p>绿色背景</p>");
            $(".div2").css({"background-color":"green","font-weight":"border","font-style":"italic"});
        });
         
        $("input[type='text']").keypress(function(event){
            console.log(event);
            if(event.keyCode==66){
                $(".div2").css("background-color","blue");
                $("p").remove();
            }
             
            else if(event.keyCode==71){
                $(".div2").css("background-color","green");
                $("p").remove();
            }
        })
    </script>
</body>
</html>

如果解答了同学的疑问,望采纳~

祝学习愉快~


1

好帮手慕柯南

2019-04-16

同学你好!val可以清除input的内容,但是不能清除div的内容。如果我的回答解决了你的疑惑,请采纳,祝学习愉快~

1

0 学习 · 10204 问题

查看课程