js在项目经常会遇到未结束的字符串常量的困扰,经php666整理后,加上自己的开发经验为大家列举了以下几种常见的案例以及解决的方案 :
一就是js文件与页面编码不一致,导致文件内部特殊字符因格式不一致就会在解码时出现乱码,从而导致编译器在未到达引号( "或' )前提前结束,产生“未结束的字符串常量”。
解决办法:如果是外部引入js文件 ,可以在<script type text/javascript” src=”XXX.js” charset=”###″> 中设置charset="###"与你的网页编码一致就可以了;
二 在JAVASCRIPT中,字符串前后标记(如单引号或双引号)不匹配或者嵌套错误
解决办法: 让前后引号正确配对;共有两层嵌套时,双引号内嵌套单引号是正确的,单引号内嵌套双引号也是正确的。共有三层嵌套时,最里面一层引号不能和最外面一层相同,这样是错误的,可以在最里面一层引号前加上转义字符“\”。
三 JAVASCRIPT的字符串不能跨行,源码如下 :
document.write('<table width=770 border=0 cellpadding=0 cellspacing=0> <tr> <td><img src=../images/f_01.gif border=0 /></td> <td><img src=../images/f_02.gif border=0 /></td> </tr> </table>') Line:2 Char:71 Code:0 Error:未结束的字符串常量 解决方法:
一种方法用\N分隔每一行 源码修改为:
document.write('<table width=770 border=0 cellpadding=0\n cellspacing=0>\n<tr>\n<td><img src=../images/f_01.gif border=0 /></td>\n<td><img src=../images/f_02.gif border=0 /></td>\n</tr>\n</table>');
另一种方法使用多个document.write输出语句,比如源码修改如下:
1.document.writeln('<table width=770 border=0 cellpadding=0 ');document.writeln('cellspacing=0> '); 2.document.writeln('<tr> '); 3.document.writeln('<td><img src=../images/f_01.gif border=0 /></td> '); 4.document.writeln('<td><img src=../images/f_02.gif border=0 /></td> </tr> '); 5.document.writeln('</table>'); 四传递的参数变量内或者脚本变量中包含HTML标记语言、包含换行符或包含引号:
这种情况是最难发现的,容易忽略了变量内部文字原因产生的,将字符串以参数形式传递给一个函数或者href、action时,该字符串里包含换行符、引号或HTML标记,造成了此错误。如:a.测试时使用单行数据是正常的,未出现这个错误;使用多行数据并使用回车键换行,就出现了此错误,因为里面包含换行符。源码 b.mArray[<%=n_id%>]="<%=loopnum%><><%=n_topic%><><%=state%><><%=n_sendtime%><><%=n_content%>";看似无误,但是<%=n_topic%>、<%=n_content%>中包含了多个单双引号,就出现了此错误。
解决办法:
对于这种情况,我的解决方法有两个,一个是将字符串变量进行替换操作,将双引号替换成单引号,单引号替换成“\"”,不过这样在传递后读取时还得替换成原文;第二种方法是不直接将数据以参数形式传递,而是先将其赋值给一个隐藏文本内,函数里只需读取文本中的内容即可。
|
相关推荐
做JavaScript的时候,发现老是出现错误:“未结束的字符串常量”.自己找了下应该是传参数的时候,有特殊字符引起的.网上也找了下,也有好多出现这种情况.做下总结,以方便以后查阅.
JavaScript文件只在IE6下出错(“未结束的字符串常量”)的解决办法。
在引入jQuery的autocomplete组件时,遇到js报未结束字符串常量错误,原因及解决方法如下,大家可以参考下
1.JAVASCRIPT引用时,使用的... 这种比较常见,往往在输出字符串时,出现单引号(‘)或双引号(”)不配对,或者是在[removed]()的时候,没有正确输出单引号(‘)或双引号(”) 3.参数内出现HTML标记语言或包含换行符 我今天所遇
10.JS中的取字符串长度是:(length) 11.JS中的字符与字符相连接使用 號. 12.JS中的比较操作符有:==等于,!=不等于,>,>=, 13.JS中声明变量使用:var来进行声明 14.JS中的判断语句结构:if(condition){}else{} 15.JS中的...
• sample21.htm 通过字符串的起始位置和结束位置来获得子字符串 • sample22.htm slice()方法的使用 • sample23.htm substr()方法的使用 • sample24.htm 查找子字符串在字符串中...
1.7.1 字符串 1.7.2 数字 1.7.3 null 1.7.4 undefined 1.7.5 对象直接量 1.7.6 数组直接量 第2章 注释 2.1 单行注释 2.2 多行注释 2.3 使用注释 2.3.1 难于理解的代码 2.3.2 可能被误认为错误的代码 ...
Javascript,简称为 JS,是一款能够运行在 JS解释器/引擎 中的脚本语言 JS解释器/引擎 是JS的运行环境: 1、独立安装的JS解释器 - NodeJS 2、嵌入在浏览器中的JS解释器 JS的发展史: 1、1992年 Nombas 开发...
1.7.1 字符串 1.7.2 数字 1.7.3 null 1.7.4 undefined 1.7.5 对象直接量 1.7.6 数组直接量 第2章 注释 2.1 单行注释 2.2 多行注释 2.3 使用注释 2.3.1 难于理解的代码 2.3.2 可能被误认为错误的代码 ...
param_object:一个simple JavaScript object,所有的name/value都必须是字符串,例如(this.setPostParams({ "Mari": name });)。 - 返回 void [编辑本段]SWFUpload中的事件 SWFUpload在运行过程中提供了...
System.out.printf() 可插入带 % 的输入类型,前两种只可以插入转义符, 不能插入 % 的数据或字符串 在 printf 里面,输出有5个部分 %[argument_index$][flags][width][.precision]conversion 以“%”开头,[第几个...
登录错误时没有提示框或提示框乱码 <br>1) 如果用户名错误则白屏,状态栏js报错误: 行: 1 字符: 57 错误: 未结束的字符串常量 代码: 0 <br>2) 如果用户名正确,密码错误 不提示任何信息返回...
5、新增“文本_是否为双字节字符”与OPenGL支持库->文字轮廓 中的 是否为双字节字符功能相同。 6、新增“文本_是否为字母”,判断指定文本是否为字母。 7、新增“目录_取桌面目录”获取当前系统桌面目录。 MD5:...