在javascript中使用el表达式(jsp中的javascript中支持写el表达式,毋庸置疑,单独的js文件中不支持写el表达式,别钻牛角尖)

5 篇文章 0 订阅
4 篇文章 0 订阅

哎,够背的,最后4张图怎么调整都很小,看不清楚,所以大家还是看我这篇文章吧在javascript中使用el表达式(图片清晰版,有图有真相),这篇文章的图片可以正常看清楚,跟我这篇文章是一样的内容!

有些文章上说,javascript中不支持写el表达式,这句话本身就不够严谨,如果说,单独的js文件中不支持写el表达式,这句话的确是对的,所以,大家在看我这篇文章的时候,希望大家别钻牛角尖,谢谢!我只是希望大家在写文章的时候能够说的严谨和明确一些,别模棱两可,要不然很容易误导别人,看这篇文章时,希望大家别钻牛角尖,希望大家别钻牛角尖,希望大家别钻牛角尖,重要的事情说3遍。

本篇文章的背景就是在jsp中的javascript中写el表达式,只要是jsp都会经过转译,解析生成html返回给客户端。

我可没说在单独的js文件中支持写el表达式。

在javascript中使用el表达式,该怎么使用呢?网上有些人还在讨论说javascript是客户端的,el表达式是服务端的,客户端不能使用服务端的东西!纯属扯淡,如果按照这样理解的话,那浏览器是客户端,那浏览器就不能从服务器上获取到数据,把数据展现在浏览器了!

接下来讲一讲怎么在javascript中使用el表达式!下面我自己写了个例子,如下截图,有图有真相才有说服力!哈哈........

浏览器界面效果如下:

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

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

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

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

图1

图2

图3

图4

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

<%@ 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>

我们可以这样做个测试,在一个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表达式从服务端获取到的!代码如下:

<script type="text/javascript">
var message = ${sessionScope.userName};
alert(message);
</script>

大家想下会有什么问题?

如果${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中定义一个数字类型的变量像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"从字符串类型转换为数字类型再做数学运算即可!

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值