Javascript Node.innerHTML以小写形式给出标记名
我正在迭代NodeList以获取Node数据,但在使用Node.innerHTML时,我获取的是小写的标记名 实际标签Javascript Node.innerHTML以小写形式给出标记名,javascript,dojo,innerhtml,Javascript,Dojo,Innerhtml,我正在迭代NodeList以获取Node数据,但在使用Node.innerHTML时,我获取的是小写的标记名 实际标签 使用正则表达式可能需要一些时间才能弄清楚,但您可以使用: var str = '<panel><label>test</label></panel>'; chars = str.split(""); for (var i = 0; i < chars.length; i++) { if
使用正则表达式可能需要一些时间才能弄清楚,但您可以使用:
var str = '<panel><label>test</label></panel>';
chars = str.split("");
for (var i = 0; i < chars.length; i++) {
if (chars[i] === '<' || chars[i] === '/') {
chars[i + 1] = chars[i + 1].toUpperCase();
}
}
str = chars.join("");
var str='test';
chars=str.split(“”);
对于(变量i=0;i 如果(chars[i]=='如果您试图将标记名的第一个字符大写,则可以使用:
var s = 'panel';
s.replace(/(^.)(.*)/,function(m, a, b){return a.toUpperCase() + b.toLowerCase()}); // Panel
或者,您可以使用字符串操作(可能比正则表达式更有效):
上面的命令将输出任何输入字符串,其中第一个字符为大写,其他所有字符均为小写。您不能指望。innerHTML
保留原始HTML的确切性质。事实上,在某些浏览器中,它有显著的不同(尽管生成相同的结果)具有不同的引用、案例、属性顺序等
最好不要依赖于case的保存,而是调整javascript来处理不确定的case
当然可以使用正则表达式进行不区分大小写的搜索(“i”标志将其搜索指定为不区分大小写),尽管通常使用直接DOM访问/搜索比使用innerHTML搜索要好得多。在我们提供一些代码之前,您必须告诉我们您到底想做什么。这没有经过彻底测试,效率很低,但它在控制台中运行得很快:
(同样,它是jquery,但可以轻松地转换为纯javascript/DOM)
函数标记字符串(元素){
返回$(元素)。
克隆()。
目录()。
删除()。
end()[0]。
外层TML。
替换(/(^什么是“it”?不能只使用i(不区分大小写)用表达式标记?在HTML中,标记名大小写是不相关的。浏览器通常会将标记名显示为全部大写或全部小写,但这只是一个观察。哦,正则表达式不太适合解析标记。哦,如果你称之为XML,浏览器应该保留大小写。嗨,jfriend00,我在需要标记的地方附上了我的代码因为我在其他地方使用它们来生成xml。ModifyCommand需要作为子项的文本,以便将数据放在小部件中。
var xhrArgs = {
url: "./user/"+Runtime.userName+"/ws/workspace/"+Workbench.getProject()+"/lib/custom/"+(first.type).replace(".","/")+".html",
content: {},
sync:true,
load: function(data){
var test = domConstruct.toDom(data);
dojo.forEach(dojo.query("[id]",test),function(node){
domAttr.remove(node,"id");
});
var childEle = "";
dojo.forEach(test.childNodes,function(node){
if(node.innerHTML){
childEle+=node.innerHTML;
}
});
command.add(new ModifyCommand(newWidget,{},childEle,context));
}
};
var str = '<panel><label>test</label></panel>';
chars = str.split("");
for (var i = 0; i < chars.length; i++) {
if (chars[i] === '<' || chars[i] === '/') {
chars[i + 1] = chars[i + 1].toUpperCase();
}
}
str = chars.join("");
var s = 'panel';
s.replace(/(^.)(.*)/,function(m, a, b){return a.toUpperCase() + b.toLowerCase()}); // Panel
s.charAt(0).toUpperCase() + s.substring(1).toLowerCase(); // Panel
function tagString (element) {
return $(element).
clone().
contents().
remove().
end()[0].
outerHTML.
replace(/(^<\s*\w)|(<\/\s*\w(?=\w*\s*>$))/g,
function (a) {
return a.
toUpperCase();
}).
split(/(?=<\/\s*\w*\s*>$)/);
}
function capContents (element) {
return $(element).
contents().
map(function () {
return this.nodeType === 3 ? $(this).text() : capitalizeHTML(this);
})
}
function capitalizeHTML (selector) {
var e = $(selector).first();
var wrap = tagString(e);
return wrap[0] + capContents(e).toArray().join("") + wrap[1];
}
capitalizeHTML('body');