JavaScript如何将两个文本输入内容保存到同一个txt文件
问题根因
你的代码有3个核心问题导致功能失效:
- 元素ID匹配错误:两个textarea的实际ID是
textbox1、textbox2,原代码中获取的是不存在的IDtextbox,连第一个输入框的值都拿不对 - 不需要创建第二个Blob:Blob构造函数原生支持传入多段内容组成的数组,直接把两个输入框的内容按格式拼接后传入单个Blob即可
- 无效DOM操作:你创建的a标签从未被插入到文档树中,原代码最后一行
document.removeChild(anchor)会直接抛出错误,中断函数执行
修复后完整实现
所有逻辑都保留在原saveIndex()函数内,不需要新增额外函数:
function saveIndex() { // 获取两个文本框的输入值 const content1 = document.getElementById('textbox1').value; const content2 = document.getElementById('textbox2').value; // 拼接文本内容,这里用换行分隔两部分内容,你可以按需调整格式 const fullContent = `【第一部分内容】\n${content1}\n\n【第二部分内容】\n${content2}`; // 生成单个Blob,指定utf-8编码避免中文乱码 const myBlob = new Blob([fullContent], { type: "text/plain;charset=utf-8" }); const url = window.URL.createObjectURL(myBlob); const anchor = document.createElement("a"); anchor.href = url; anchor.download = "textfile.txt"; anchor.click(); window.URL.revokeObjectURL(url); // 删除原代码中无效的removeChild逻辑 }
对应的HTML部分可以修正无效属性(label的for值、button上无效的for属性):
<body> <label for="textbox1">Textbox1</label> <textarea id="textbox1"></textarea> <label for="textbox2">Textbox2</label> <textarea id="textbox2"></textarea> <button type="button" id="bt" value="Exporter" onclick="saveIndex()"> EXPORT </button> </body>
可选调整
如果你不需要给两部分内容加标识,也可以直接把多段内容传入Blob构造函数,不需要提前拼接成字符串:
// 两个内容之间用两个换行分隔,避免内容粘连 const myBlob = new Blob([content1, '\n\n', content2], { type: "text/plain;charset=utf-8" });
内容的提问来源于stack exchange,提问作者giotto1
相关产品推荐
相关产品推荐

