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下出现“未结束的字符串常量”的错误。这是一个比较常见的错误提示,意味着在JavaScript代码中,某个字符串的结束引号没有被正确找到。字符串常量的错误通常由于编码不一致、引号...
综上所述,JavaScript报未结束字符串常量错误的原因可能是由于字符串中使用了不正确的字符。解决此类问题通常包括检查字符串中的字符是否为正确的编码类型,确保字符串正确闭合。开发者应该注意编码问题,并利用现代...
1.JAVASCRIPT引用时,使用的... 这种比较常见,往往在输出字符串时,出现单引号(‘)或双引号(”)不配对,或者是在[removed]()的时候,没有正确输出单引号(‘)或双引号(”) 3.参数内出现HTML标记语言或包含换行符 我今天所遇
在输出结果部分,程序使用了预定义的字符串常量,如`letter`、`digit`和`otherchar`,它们分别用于显示字母、数字和其他字符的计数信息。每个计数器的值会被格式化并输出,最后程序会终止执行。 总的来说,这个程序...
首先,它对输入字符串进行检查,确保其符合JSON的基本格式,例如检查字符串是否以引号开始和结束,以及大括号和中括号的匹配。如果不符合格式,会抛出 `IllegalArgumentException`。 `first()` 和 `next()` 方法...
这可能导致程序运行时出现“未结束的字符串常量”这样的错误。 在DW的代码视图中,你可以清晰地看到字符串中的每个字符,包括换行符。换行符通常会显示为一个空格或者一个明显的断行,使得你能够快速定位并删除它们...
例如,连续的字母数字下划线构成标识符,以 `"` 或 `'` 开始并结束的字符串常量,以及以 `//` 或 `/*` 开始的注释等。 3. **词法单元生成**:一旦匹配成功,就创建相应的词法单元,包含该元素的类型和值。例如,创建...
2. **字符串常量**:在多数编程语言中,字符串是以null字符('\0')结尾的字符数组。例如,"Hello"在内存中实际上是{'H', 'e', 'l', 'l', 'o', '\0'}。 3. **操作**:你可以对字符数组进行读取、修改、复制、比较等...
在 JavaScript 中,数据类型包括字符串(string)、数值型(number)、布尔型(boolean)、null、undefined 和对象(object)。其中数组(array)属于对象,判断数据类型需要使用 typeof() 函数。 变量 变量的命名...
10. **字符串连接**:在JavaScript中,使用`+`号可以连接两个字符串。 11. **比较操作符**:`==`表示等于,`!=`表示不等于,`>`表示大于,`表示小于,`>=`表示大于等于,`表示小于等于。 12. **变量声明**:使用`...
- `stringA.substring(2,6)`:从字符串中提取子字符串。 ### 40. 数学函数和常量 - `Math.PI, Math.SQRT2, Math.max(), Math.pow(), Math.round(), Math.floor()`:提供数学计算功能和常量值。 ### 41. 创建日期...
33. **查找子字符串**:`String1.indexOf("String2")`返回子字符串在原字符串中的索引,返回-1表示未找到。 34. **字符获取**:`string.charAt(index)`返回字符串中指定位置的字符。 35. **子字符串截取**:`...
- `parseInt()`和`parseFloat()`:前者用于整数解析,后者处理小数,且两者都受字符串中无效字符的影响。 这些只是JS笔记的一部分,实际文档中还可能包含了更多关于变量作用域、函数、对象、数组、循环、条件判断...
`展示了如何创建字符串对象,但实际上在JavaScript中直接使用字符串字面量更为常见。 ### 36. 字符串大小写转换 字符串对象提供了`.toUpperCase()`和`.toLowerCase()`方法,用于将字符串转换为全部大写或小写字母。...