用HTML元素替换字符串的一部分
Replacing part of string with a HTML Element
我使用纯Javascript将字符串的一部分替换为HTML元素。
我使用以下脚本来完成我需要的操作,将var data
视为对象数组,其中data[objectAtIndex].text
具有以下示例字符串{0} is the right answer
,但它也可以包含Something {0} fishy
。字符串的{0}
部分可以在任何时间更改位置。
var select = document.createElement("select"),
textDiv = document.createElement("div");
textDiv.innerHTML = data[i].text.replace(pattern, select);
我使用的正则表达式看起来像var pattern = /'{0'}/i;
现在,这已经完成了一半,只是它将select元素转换为字符串,从而生成[object HTMLSelectElement]
,而不是实际的元素本身。
我想要的是实际的元素,而不是它的字符串表示,而且我真的找不到任何不使用jQuery的答案。
这里是最简单的解决方案。使用select.outerHTML
var select = document.createElement("select"),
textDiv = document.createElement("div");
textDiv.innerHTML = data[i].text.replace(pattern, select.outerHTML);
并得到广泛支持。
实例:
var text = "This is a <strong>test</strong> {0} Testing <em>1 2 3</em>"
var pattern = /'{0'}/i;
var select = document.createElement("select"),
textDiv = document.createElement("div");
textDiv.innerHTML = text
document.body.appendChild(textDiv);
setTimeout(function(){
textDiv.innerHTML = text.replace(pattern, select.outerHTML);
}, 1000)
将元素封装在临时<div>
中,然后获得其.innerHTML
。
var select = document.createElement("select"),
textDiv = document.createElement("div"),
tempDiv = document.createElement("div");
tempDiv.appendChild(select);
textDiv.innerHTML = data[i].text.replace(pattern, tempDiv.innerHTML);
使用innerHTML
,就是在使用标记。因此,一个选项是,只需使用标记(但随后会有更多选项):
var textDiv = document.createElement("div");
textDiv.innerHTML = data[i].text.replace(pattern, "<select></select>");
实例:
var data = {
0: {
text: "This is a <strong>test</strong> {0} Testing <em>1 2 3</em>"
}
};
var i = 0;
var pattern = /'{0'}/i;
var textDiv = document.createElement("div");
textDiv.innerHTML = data[i].text.replace(pattern, "<select></select>");
document.body.appendChild(textDiv);
如果不想使用标记,可以将字符串的一部分附加在{0}
之前,然后是元素,然后是{0}
:之后的字符串部分
var select = document.createElement("select"),
textDiv = document.createElement("div"),
text = data[i].text,
index = text.indexOf("{0}"); // No need for case-insensitivity
if (index === -1) {
index = text.length;
}
textDiv.innerHTML = text.substring(0, index);
textDiv.appendChild(select);
if (index < text.length) {
textDiv.insertAdjacentHTML("beforeend", text.substring(index + 3));
}
var data = {
0: {
text: "This is a <strong>test</strong> {0} Testing <em>1 2 3</em>"
}
};
var i = 0;
var select = document.createElement("select"),
textDiv = document.createElement("div"),
text = data[i].text,
index = text.indexOf("{0}"); // No need for case-insensitivity
if (index === -1) {
index = text.length;
}
textDiv.innerHTML = text.substring(0, index);
textDiv.appendChild(select);
if (index < text.length) {
textDiv.insertAdjacentHTML("beforeend", text.substring(index + 3));
}
document.body.appendChild(textDiv);
或者,如果模式的是正则表达式:
var select = document.createElement("select"),
textDiv = document.createElement("div"),
text = data[i].text,
match = pattern.exec(text),
index = match ? match.index : text.length;
textDiv.innerHTML = text.substring(0, index);
textDiv.appendChild(select);
if (match) {
textDiv.insertAdjacentHTML("beforeend", text.substring(index + match[0].length));
}
var data = {
0: {
text: "This is a <strong>test</strong> {0} Testing <em>1 2 3</em>"
}
};
var i = 0;
var pattern = /'{0'}/i;
var select = document.createElement("select"),
textDiv = document.createElement("div"),
text = data[i].text,
match = pattern.exec(text),
index = match ? match.index : text.length;
textDiv.innerHTML = text.substring(0, index);
textDiv.appendChild(select);
if (match) {
textDiv.insertAdjacentHTML("beforeend", text.substring(index + match[0].length));
}
document.body.appendChild(textDiv);
相关文章:
- 如何检查字符串的一部分与数组匹配
- 将字符串的一部分设置为数组的一部分
- 用数字单位替换字符串的一部分
- 移除字符串(如果找到)移除JS中字符串的一部分
- 如何获得字符串的一部分
- 作为onclick确认的一部分,Razor中的字符串属性
- 用HTML元素替换字符串的一部分
- 如何知道找到的单词是字符串的一部分还是JavaScript中的函数调用
- j如何从给定字符串的一部分替换字符串
- 如何使用RegExp选择字符串的一部分并在变量中重用它
- 返回javascript中regex字符串的一部分
- JQuery获取字符串的一部分
- JavaScript Regexp仅匹配字符串的一部分
- 如何在数组jQuery中查找字符串的一部分
- 撇号标记在javascript字符串中与Backslash一起发送,该字符串使用ajax作为json对象的一部分发送到p
- JavaScript:将字符串的一部分放入DOM容器中,保存溢出
- 将字符串的一部分转换为DataTables的JSON
- 如何在javascript数组中剥离字符串的一部分
- 如何在Javascript/Jquery中突出显示给定字符串中的一部分字符串
- 如何在javascript中搜索整个字符串中的一部分字符串