JavaScript拼接html字符串时截断问题
在项目中碰到一个问题,就是JavaScript拼接html标签时,里面特殊字符会有些问题,比如单引号截断配对,导致后面的内容不显示或显示错误。在此记录一下。
下面贴一段简化的代码,若有描述不清的地方还请各位指正,共同进步。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<div style="height: 300px; width: 520px; border: 1px solid gray;">
<label id="content"> </label>
<p>title值</p> <div style="height: 100px; width: 520px; border: 1px solid red;">
<label id="contentRight"></label>
<p>正确的<br />title </p>
</div> <label id="contentError"></label>
<p>错误的<br />title </p>
</div>
<script src="jquery-1.7.2.min.js"></script>
<script src="encodeF.js"></script>
</body>
</html>
html
用的的js文件也很简单,见下面代码:
$(function()
{
////拼接字符串值。
var value="~!@#$%^&*()_+`-=[]{};'\:\"|,./<>?";
////存储div原来的内容,以便后期处理,此处我们只是显示拼接字符串的值。
var oldStr;
////加转换过的title
var rightStr;
////加未处理拼接字符的title
var errorStr; oldStr=$("#content").html();
oldStr= oldStr+value;
rightStr= "<p title='" + escapeHtml(value) + "'>rightStr1</p>" ;
errorStr= "<p title='" +value + "'>errorStr1</p>" ;
////显示
$("#contentRight").html(rightStr);
$("#contentError").html(errorStr);
$("#content").html(oldStr);
})
////HTML实体编码:应对特殊字符
function escapeHtml(string) {
var entityMap = {
"&": "&",
"<": "<",
">": ">",
'"': '"',
"'": ''',
"\\": '\',
"/": '/'
};
return String(string).replace(/[&<>\"\'\/]/g, function (s) {
return entityMap[s];
});
}
encodeF.js
具体效果图见下图,正确输出是左边的rightStr1上的title,右面显示的是截断的title,并导致页面元素显示错误,多出了“ ?'>’ ”这三个字符:

JavaScript拼接html字符串时截断问题的更多相关文章
- Javascript拼接HTML字符串的方法列举及思路
转载过来,去掉一些废话吧. 目标: 方便的拼接字符串,不使用让人眼晕的+=.使用过程如下: 1,先创建一个作为“模板”的字符串,如:’My name is ${name},I\’m ${age}.’ ...
- JavaScript如何实现字符串拼接操作
实际应用中,目标字符串的生成可能需要多个数据的拼接. 由于应用频繁,几乎是所有编程语言都必须掌握的操作,当然每种语言具有各自特点. 本文将通过代码实例详细介绍一下JavaScript如何实现字符串拼接 ...
- javascript中对字符串的操作总结
原文:javascript中对字符串的操作总结 没听过一句话吗?程序员的世界,不处理字符串就是处理数组.这是群里的一位前辈和我说的,显然这和我之前理解的DOM是javascript的核心的不同的,看了 ...
- 基于easyui框架中input 类型的checkbox拼接成字符串存入数据库和读取选中---善良公社项目
项目中我做修改用户个人资料的时候,有一个需求是帮助人员的帮助类型如图下所示: 当初想如果是asp.net控件的话应该很简单实现,如果不是基于easyUI框架那就太简单了,现在是受框架的限制与是前端ht ...
- JavaScript基础——处理字符串
String对象是迄今为止在JavaScript中最常用的对象.在你定义一个字符串数据类型的变量的任何时候,JavaScript就自定为你创建一个String对象.例如: var myStr = &q ...
- JavaScript复习笔记——字符串
String构造器可以使用new调用,也可以不使用,但是,这两种调用的结果也是完全不一样的.用new调用的时候,String作为构造器函数,创建字符串对象.不使用new的时候,String用作一个常规 ...
- ASP.NET开发在JavaScript有中文汉字时出现乱码时简单有效的解决
一般情况在使用ASP.NET开发使用JavaScript有中文汉字时不会出现乱码情况,比如:alert('您看到我了吗?');这样直接输入中文汉字的代码中是不会出现乱码的,如果出现了,一是检查Web. ...
- java.text.MessageFormat格式化字符串时的小技巧
java.text.MessageFormat格式化字符串时的小技巧 public static void main(String[] args) throws InterruptedExceptio ...
- javascript中的字符串对象和数组对象
1.javascript的对象的概念 在javascript中,除了null和undefined以处,其他的数据类型都被定义成了对象 也可以用创建对象的方法定义变量,string,math,array ...
随机推荐
- Shell编程(七)函数
1. 函数开始 #!/bin/bash foo() { echo "Function foo is called"; } echo "-=start=-" fo ...
- Golang入门教程(十五)指针
什么是指针? 指针是一个变量,用于存储另一个变量的内存地址. 在上面的例子中,变量b的值是156,存储在内存地址0x1040a124. 变量a包含b的地址. 可以说现在a指向b. 声明指针 指向类型 ...
- Spark源码剖析 - SparkContext的初始化(十)_Spark环境更新
12. Spark环境更新 在SparkContext的初始化过程中,可能对其环境造成影响,所以需要更新环境,代码如下: SparkContext初始化过程中,如果设置了spark.jars属性,sp ...
- intptr_t 指针
对于64为系统: typedef signed char int8_t; typedef short int int16_t; typedef int int32_t; # if __WORDSI ...
- luogu P3980 [NOI2008]志愿者招募
传送门 网络流又一神仙套路应用 首先考虑列不等式,设\(x_i\)为第i种人的个数,记\(b_{i,j}\)为第i种人第j天是否能工作,那么可以列出n个不等式,第j个为\(\sum_{i=1}^{m} ...
- MacOS下IntelliJ IDEA关联JDK1.8源码
1 打开jdk设置,找到具体添加的地方 2 找到自己jdk的源码位置替换掉 3 如果没有源码或者源码没有下载解压,自己下载解压,Mac下安装的自带src.zip和javax-src.zip解压好后,再 ...
- 实现多线程爬取数据并保存到mongodb
多线程爬取二手房网页并将数据保存到mongodb的代码: import pymongo import threading import time from lxml import etree impo ...
- java实现excel生成和导出
1.java生成excel 2.java读取excel内容
- Leetcode#118. Pascal's Triangle(杨辉三角)
题目描述 给定一个非负整数 numRows,生成杨辉三角的前 numRows 行. 在杨辉三角中,每个数是它左上方和右上方的数的和. 示例: 输入: 5 输出: [ [1], [1,1], [1,2, ...
- day 11 - 1 装饰器
装饰器 装饰器形成的过程:最简单的装饰器——有返回值的——有一个参数——万能参数装饰器的作用:不想修改函数的调用方式 但是还想在原来的函数前后添加功能原则:开放封闭原则语法糖:@装饰器函数名装饰器的固 ...