html拼接时,a标签的函数传参时,为什么要加引号?跟转义有无关系?(大家是怎么看到这篇博客的求告知,有什么疑问想说的欢迎评论)
2017-02-23 11:26
573 查看
昨天发现了这个问题,只百度到了一个比较类似的答案,他说的是一定要加引号;可是我自己练的时候,不加也可以,所以就一直有疑问。
然后今天,在F12的帮助下,终于明白了,下面一起看心路历程:
在跟公司代码的时候,
首先解释一下这段代码,不解释这段code的用途,只解释这段code是什么。
可以看出,由很多引号组成,不管是单引号还是双引号。
首先,我们看一下如果正常写应该怎么写,就是不拼接,直接写在body里面的是时候是怎么写的:
而现在的情况是,把整个a标签里面的内容作为字符串赋值给一个变量,还涉及到把常量2变成一个变量。
想到这里的时候,我就觉得这样已经很完美了,就这样用不就行了嘛,简单易懂。所以,越看id两边的\’转义符越奇怪,为什么要加这个呢,然后我就觉得自己试试,看看不加行不行。
这个时候可以正常弹出1,于是我更加坚定了自己的想法,可以不加的嘛。
所以疑惑加深了,既然可以不加,为什么要加,我这个人呢最怕麻烦,能省事一点就省事一点,虽然这篇博客有点过于详细了。
各种百度,没有我想要的答案,于是洗个澡,关灯趴在床上,冥思苦想。
不如,f12试试吧,看看变量怎么传的:
拼的字符串在html解析之后,变成了我们想要的样子。这时候,我发现了一个问题:1是没有引号的。
定义变量时,是一个字符串,可是传参时,只传了字面值,就是说++取得是1 ,而不是‘1’,而有趣的是
刚才是数字。如果是字符串里面有字母的话,比如,
(下面是特别注意)
至此,引号加不加分情况,
1.参数为1,’1’,这种数字型参数时,加不加都行;
2.参数为‘a’,‘a123’这种字符串型,必须加;
3.加的话可以确保万无一失。
然后今天,在F12的帮助下,终于明白了,下面一起看心路历程:
在跟公司代码的时候,
var edit = '<a href="javascript:editRecord(\''+_id+'\')" >编辑</a>';
首先解释一下这段代码,不解释这段code的用途,只解释这段code是什么。
可以看出,由很多引号组成,不管是单引号还是双引号。
首先,我们看一下如果正常写应该怎么写,就是不拼接,直接写在body里面的是时候是怎么写的:
<a href="javascript:editRecord()" >编辑</a>
而现在的情况是,把整个a标签里面的内容作为字符串赋值给一个变量,还涉及到把常量2变成一个变量。
第一步:变成字符串 '<a href="javascript:editRecord()" >编辑</a>' 第二步:加变量 '<a href="javascript:editRecord('+_id+')" >编辑</a>' 这个时候我们把这个字符串拆开了,变成:字符串+变量+字符串 用+作连接符,++之间放变量
想到这里的时候,我就觉得这样已经很完美了,就这样用不就行了嘛,简单易懂。所以,越看id两边的\’转义符越奇怪,为什么要加这个呢,然后我就觉得自己试试,看看不加行不行。
var variable = '1'; var str = '<a href="javascript:aaa(' + variable + ')">clickhere</a>'; document.getElementById("span").innerHTML = str; function aaa(i) { alert(i); //1 }
这个时候可以正常弹出1,于是我更加坚定了自己的想法,可以不加的嘛。
所以疑惑加深了,既然可以不加,为什么要加,我这个人呢最怕麻烦,能省事一点就省事一点,虽然这篇博客有点过于详细了。
各种百度,没有我想要的答案,于是洗个澡,关灯趴在床上,冥思苦想。
不如,f12试试吧,看看变量怎么传的:
拼的字符串在html解析之后,变成了我们想要的样子。这时候,我发现了一个问题:1是没有引号的。
定义变量时,是一个字符串,可是传参时,只传了字面值,就是说++取得是1 ,而不是‘1’,而有趣的是
function aaa(i) { if(i==1){ alert("1");//1 } if(i=='1'){ alert("'1'"); //'1' } } 都可以输出。
刚才是数字。如果是字符串里面有字母的话,比如,
(下面是特别注意)
var a='sdw123'; 因为++取的值是sdw123,但是我们传参的时候不能这么传aaa(sdw123), 应该是aaa('sdw123'); 意味着我们要在++两边加上'',而这就是那个看似转义符的由来,那个转义符的作用实际上是将参数变为字符串。
所以,第三步, '<a href="javascript:editRecord('+_id+')" >编辑</a>' 在++两边加上转义符, 实际上不是加转义符,而是要加引号,使其变成字符串, 怎么在++两边加'', 在保证字符串可以连接且变量起作用的情况下,只能这么加: '<a href="javascript:editRecord(\''+_id+'\')" >编辑</a>' ( 两个转义符是一对; 把引号放在了字符串内部,不影响字符串连接,变量也能用; 在html转义后, 就是下图:是带引号的 )
至此,引号加不加分情况,
1.参数为1,’1’,这种数字型参数时,加不加都行;
2.参数为‘a’,‘a123’这种字符串型,必须加;
3.加的话可以确保万无一失。
相关文章推荐
- js变量(大家是怎么看到这篇博客的求告知,有什么疑问想说的欢迎评论)
- jsp接收值为空时,如何处理(大家是怎么看到这篇博客的求告知,有什么疑问想说的欢迎评论)
- if条件 简单正则(大家是怎么看到这篇博客的求告知,有什么疑问想说的欢迎评论)
- 在html <table> 标签的中background和bgcolor两个属性有什么关系?
- CSDN博客里markdown中想引用html标签怎么添加?
- 大家对深圳俱乐部活动有什么好的建议,欢迎跟进评论
- php转义和去掉html、php标签函数
- C# PDF Page操作——设置页面切换按钮 C# 添加、读取Word脚注尾注 C#为什么不能像C/C++一样的支持函数只读传参 web 给大家分享一个好玩的东西,也许你那块就用的到
- jQuery操作html页面的标签即html页面(其实不只是针对jQuery,而是针对整个JavaScript领域,即JavaScript脚本或者函数操作html页面的标签)的工作原理是什么?
- php 自定义函数实现博客文章预览,无乱码,自动补齐HTML标签
- io移动开发,云通讯短信验证接口demo详解如,有疑问欢迎与博客评论留言与我探讨
- 为什么SYBASE不支持length()函数??用什么函数来代替length()函数
- 欢迎大家来讨论这个故事告诉我们什么
- 为什么我的javascript脚本识别不了asp.net 控件,只能识别html标签.....??
- 欢迎大家来到我的博客空间
- 欢迎大家光临我的博客空间
- 博客新开张~~~欢迎大家光临了:)
- Hi,欢迎大家来到我的技术博客!
- 欢迎大家留下自己的评论
- 欢迎大家光临我的博客