Text类型

本文介绍了在DOM中如何创建、规范化及分割文本节点。通过document.createTextNode()可以创建文本节点,并将其添加到文档树中。规范化文本节点能将相邻的文本节点合并为一个。splitText()方法则用于将一个文本节点分割成两个。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>Text类型(创建文本节点,规范化文本节点,分割文本节点)</title>
	</head>
	<body>
		<div id="myDiv" class="bd" title="Body text" lang="en">v</div>
	</body>
	<script>
		/*
		 nodeType的值为3;
		 nodeName的值为"#text";
		 nodeValue的值为节点所包含的文本;
		 parentNode是一个Element;
		 不支持(没有)子节点。
		 * */
		/*
		 appendData(text):将text添加到节点的末尾。
		 deleteData(offset, count):从offset指定的位置开始删除count个字符.
		 insertData(offset, text):在offset指定的位置插入text。
		 replaceData(offset, count, text):用text替换从offset指定的位置开始到offset+ count为止处的文本。
		 splitText(offset):从offset指定的位置将当前文本节点分成两个文本节点。
		 substringData(offset, count):提取从offset指定的位置开始到offset+count为止处的字符串。
		 除了这些方法之外,文本节点还有一个length属性,保存着节点中字符的数目。而且,nodeValue.length和data.length中也保存着同样的值。
		 在默认情况下,每个可以包含内容的元素最多只能有一个文本节点.
		 * */
		
		 var textNode = document.createTextNode("Helloworld!");
		 document.getElementById('myDiv').appendChild(textNode)
		 
		 /*
		 创建文本节点
		 document.createTextNode()创建新文本节点
		 在创建新文本节点的同时,也会为其设置ownerDocument属性。不过,除非把新节点添加到文档树中已经存在的节点中,否则我们不会在浏览器窗口中看到新节点。
		 * */
		/*规范化文本节点
		 DOM 文档中出现相邻文本节点的情况也不在少数,于是就催生了一个能够将相邻文本节点合并的方法。这个方法是由 Node 类型定义的(因而在所有节点类型中都存在);
		 名叫 normalize()。如果在一个包含两个或多个文本节点的父元素上调用 normalize()方法,则会将所有文本节点合并成一个节点,结果节点的 nodeValue
		 等于将合并前每个文本节点的 nodeValue 值拼接起来的值。浏览器在解析文档时永远不会创建相邻的文本节点。这种情况只会作为执行 DOM 操作的结果出现。
		 * */
		
		/*分割文本节点
		 Text 类型提供了一个作用与 normalize()相反的方法:splitText()。这个方法会将一个文本节点分成两个文本节点,
		 即按照指定的位置分割 nodeValue 值。原来的文本节点将包含从开始到指定位置之前的内容,新文本节点将包含剩下的文本。
		 这个方法会返回一个新文本节点,该节点与原节点的parentNode 相同。
		 
		 * */
	</script>
</html>

 

转载于:https://www.cnblogs.com/gaoxuerong123/p/7803668.html

<think>嗯,用户问的是MySQL里的TEXT类型。首先,我得回忆一下MySQL的数据类型,特别是关于存储文本的部分。TEXT类型属于其中一种,用来存储大段的文本数据。 接下来,我需要确定TEXT类型和其他类似类型,比如VARCHAR或BLOB的区别。VARCHAR有长度限制,最多65535字符,但实际可能更少,取决于字符编码。而TEXT类型有四种:TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT,每种存储容量不同。可能需要详细说明每种的最大长度和存储空间。 然后,要考虑使用场景。什么时候用TEXT而不是VARCHAR?通常当需要存储超过VARCHAR上限的文本,比如长文章、日志文件等。但也要注意,TEXT类型在排序和索引方面可能有不同的处理方式,比如只能指定前几个字符作为索引。 还要提到TEXT类型的默认值问题,因为MySQL 5.7之后不允许有默认值,这点需要注意。另外,字符集的影响,比如UTF-8下每个字符可能占用3或4字节,这会影响到存储容量。 用户可能想知道如何选择不同的TEXT类型,比如根据数据长度选择TINYTEXT还是LONGTEXT。同时,可能需要提醒性能方面的考虑,比如大文本字段可能影响查询速度,尤其是在内存临时表的使用上。 最后,要检查是否有遗漏点,比如TEXT与BLOB的区别,BLOB存储二进制数据,而TEXT存储字符数据,排序时根据字符集比较。可能还要提到在应用程序中处理TEXT字段时的注意事项,比如分页加载大文本内容,避免一次性加载过大数据。 总结结构:先介绍TEXT类型及其四种子类型,各自的存储容量,使用场景,与VARCHAR的区别,字符集影响,索引限制,默认值问题,性能注意事项,以及和BLOB的对比。确保回答清晰,结构合理,用户能根据需求选择合适的类型。</think>在 MySQL 数据库中,`TEXT` 是一种用于存储较长文本字符串的数据类型。以下是它的核心特性与使用场景: --- ### 一、四种 TEXT 类型对比 | 类型 | 最大存储容量 | 等效字符数 (UTF-8) | 典型场景 | |---------------|-------------|---------------------|----------------------------| | `TINYTEXT` | 255 字节 | ≈85 个汉字 | 短评、简介、小段代码 | | `TEXT` | 64 KB | ≈21,800 个汉字 | 普通文章、邮件正文 | | `MEDIUMTEXT` | 16 MB | ≈5,600,000 个汉字 | 长篇论文、技术文档 | | `LONGTEXT` | 4 GB | ≈1,400,000,000 汉字 | 电子书、日志文件、大型 JSON | --- ### 二、核心特性 1. **字符编码依赖** - 实际存储字符数受字符集影响 - 例:UTF-8 每个汉字占 3 字节,GBK 占 2 字节 2. **索引限制** ```sql -- 只能对前 N 个字符建立索引(需指定长度) CREATE INDEX idx_content ON articles (content(100)); ``` 3. **默认值限制** - MySQL 5.7+ 不允许设置 `DEFAULT` 值 - 必须显式处理空值情况 --- ### 三、与 VARCHAR 的关键区别 | 对比维度 | VARCHAR | TEXT | |-----------------|-----------------------|-----------------------| | 最大长度 | 65,535 字节 | 4 GB | | 存储方式 | 表内存储 | 表外存储(行溢出) | | 排序规则 | 完整字段参与排序 | 需指定前缀长度排序 | | 内存临时表 | 完全加载 | 可能使用磁盘临时表 | --- ### 四、最佳实践建议 1. **容量选择策略** - 优先用 `VARCHAR`(长度 ≤ 1000 字符时) - 超过 64KB 考虑 `MEDIUMTEXT`,避免过度分配空间 2. **性能优化方向** ```sql -- 查询时避免 SELECT * SELECT id, LEFT(content, 200) AS preview FROM posts; -- 拆分大文本字段到单独表 CREATE TABLE article_details ( article_id INT PRIMARY KEY, long_text LONGTEXT, FULLTEXT(long_text) -- 全文索引优化 ); ``` 3. **特殊场景处理** - JSON 数据:MySQL 8.0+ 建议用 `JSON` 类型替代 - 二进制数据:考虑 `BLOB` 系列类型 --- ### 五、注意事项 - 字段更新会导致表碎片,定期执行 `OPTIMIZE TABLE` - 使用 ORM 时需注意文本字段的延迟加载策略 - 备份恢复时注意 `max_allowed_packet` 参数设置 根据实际业务需求选择最合适的文本存储方案,能有效平衡存储效率与查询性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值