在javascript中使用el表达式

在javascript中使用el表达式,该怎么使用呢?网上有些人还在讨论说javascript是客户端的,el表达式是服务端的,客户端不能使用服务端的东西!纯属扯淡,如果按照这样理解的话,那浏览器是客户端,那浏览器就不能从服务器上获取到数据,把数据展现在浏览器了!接下来讲一讲怎么在javascript中使用el表达式!下面我自己写了个例子,如下截图,有图有真相才有说服力!哈哈........

浏览器界面效果如下:

浏览器解释执行,解释执行之后的源代码如下图:

点击网页上的文本框,看下效果!

看下图:把这2行注释掉后,点击文本框之后客户端浏览器就不会报错了,文本框的值就变成16了。

javascript中想要正常的使用el表达式,就要为el表达式加上引号(单引号或者双引号都可以,反正总之就是要加引号)

最后,奉上这个案例的源代码

<strong><%@ page language="java" contentType="text/html; charset=utf-8"
	pageEncoding="utf-8"%>
<%
	session.setAttribute("userName", "张三");
	session.setAttribute("age", 16);
%>
<!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>演示在javascript中使用EL表达式</title>
<link rel="stylesheet" type="text/css" href="body.css">
<link rel="stylesheet" type="text/css" href="mark.css">
<script type="text/javascript">
	//测试在javascript中使用EL表达式
	function testEL() {
		var message = "${sessionScope.userName}";
		alert(message);
		var inputNode = document.getElementById("testEl");
		inputNode.value = '${sessionScope.age}';
	}
</script>
</head>
<body>
	<div align="center">
		<h1 style="color: red;">演示在javascript中使用EL表达式</h1>
		<input id="testEl" type="text" value="" onclick="testEL()">
	</div>
</body>
</html></strong>

我们可以这样做个测试,在一个jsp页面上写,alert("${sessionScope.userName}");或者可以这样alert('${sessionScope.userName}'); 不管是单引号还是双引号,都可以,反正就是要加引号。为什么要加引号呢?大家想一想? 比如我们在jsp页面上,我们写一段javascript代码,比如弹出一句话。如下例子:

<strong><script type="text/javascript">  
var message = "您好张三";  
alert(message);  
</script>  
</strong>

或者你直接alert("您好张三");这样写也是可以的。

<strong><script type="text/javascript">  
alert("您好张三");  
</script></strong>

OK,现在我们要用el表达式了,也是用alert弹出一句话,这句话是用EL表达式从服务端获取到的!代码如下:

<strong><script type="text/javascript">
//像var message = ${sessionScope.userName};这种不加引号的写法会报错,因为浏览器解释执行后最终生成的网页源代码就是var message = 张三; 
//大家想下,这符合javascript语法规范吗?在javascript中字符串是要加引号的,不然会报错,有了引号语法才对.
//字符串有了引号,浏览器在解释执行javascript语句的时候才不会报错,要不然语法是通不过的
// var message = ${sessionScope.userName};

//所以要为EL表达式加上引号,单引号、双引号都可以
//单引号ok
var message = '${sessionScope.userName}';
//双引号也是ok的
var message2 = "${sessionScope.userName}";
alert(message);
alert(message2);  
</script></strong>

大家想下会有什么问题?

如果${sessionScope.userName}从服务器端获取到的值是张三,那么最终浏览器解释执行得到的就是如下这样的结果 var message = 张三; 这样肯定是不行的,javascript中字符串肯定是要用引号引起来的,像var message = "张三";或者是像var message = '张三';这样才对,所以这下知道为什么在javascript中使用el表达式一定要用引号引起来了吧,不管是单引号还是双引号,总之就是要用引号引起来。

像alert(${sessionScope.userName});这种写法浏览器最终解释执行得到的结果就是alert(张三);所以这样写肯定会有问题,只有alert("${sessionScope.userName}");这样写或者alert('${sessionScope.userName}');这样写才可以,浏览器最终解释执行得到的结果就是alert("张三");和alert('张三');

还有就是如果${sessionScope.age}从服务器取出的是一个数字呢?比如${sessionScope.age}从服务器取出的值是16,那么要不要加引号呢? 

alert(${sessionScope.age});浏览器最终解释执行得到的结果就是alert(16);你们自己想想,javascript的语法中,数字要不要加引号呢?在javascript的语法中数字是不需要加引号的,所以alert(${sessionScope.age});浏览器最终解释执行得到的结果就是alert(16);这里不加引号也是可以的,所以可以正常弹出16,但是用el表达式从服务器上取到的数据多种多样,有字符串,有数字,有小数,有整数,有字符等等等各种类型的数据,所以不管el表达式从服务器上取到的字符串还是数字,大家在javascript中使用EL表达式的时候,为了保险起见和省事和为了不给自己找麻烦和添乱,大家最好是给EL表达式加上引号,百利而无一害。

在javascript中定义一个数字类型的变量像var age =16;这样写是没有任何问题的,然后alert(age);可以正常弹出16,没问题,如果我们像var age = "16" 或者像var age = '16'这样写呢?也没问题,只不过这里加了引号的16就是一个字符串了。

所以不管EL表达式从服务器上取到的值是字符串的还是数字,最好都加上引号,这样做比较保险,也比较省事,不管是单引号还是双引号,总之加上引号肯定没问题。

如果EL表达式从服务器上取到的值是数字,在javascript中给这个数字加上引号也没关系,如果客户端要用这个加了引号的数字做数学运算,我们可以利用javascript中的函数把这个加了引号的数字转换成数字类型再做运算!比如var age = "${sessionScope.age}" ,浏览器解释执行后得到的结果是var age = "16";大不了我们在客户端利用javascript的转换函数,把age = "16"从字符串类型转换为数字类型再做数学运算即可!

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值