这是做什么的?我可以用vanilla JavaScript实现同样的功能吗?
代码如下:这是做什么的?我可以用vanilla JavaScript实现同样的功能吗?,javascript,jquery,Javascript,Jquery,代码如下: $('<div/>').text($.trim(myId.val())).html(); 该代码获取myId值的HTML编码版本 如果myId的值为”,则上述代码返回“hello” 在vanilla JS中也会出现这样的情况: var elem = document.createElement('div'); elem.innerText = myId.value; // set as TEXT console.log(elem.innerHTML); // get a
$('<div/>').text($.trim(myId.val())).html();
该代码获取
myId值的HTML编码版本
如果myId
的值为”
,则上述代码返回“hello”
在vanilla JS中也会出现这样的情况:
var elem = document.createElement('div');
elem.innerText = myId.value; // set as TEXT
console.log(elem.innerHTML); // get as HTML
该代码获取myId值的HTML编码版本
如果myId
的值为”
,则上述代码返回“hello”
在vanilla JS中也会出现这样的情况:
var elem = document.createElement('div');
elem.innerText = myId.value; // set as TEXT
console.log(elem.innerHTML); // get as HTML
它的作用是HTML转义myId.val()
的值,删除任何前导和尾随空格
正如您已经注意到的,$.trim(myId.val())
只删除任何前导和尾随空格
它使用文本值$.trim(myId.val())
设置一个“dummy”div,这意味着它是它的文本值(没有HTML转义)
在没有参数的jQuery元素上调用.html()
时,将返回子节点的html转义值(在本例中,是您刚才插入的文本)。例如,在HTML中,作为字符转义符,符号AND具有特殊的含义,因此文字符号AND需要以转义形式表示(&;
)
使用纯JavaScript,这相当于以下内容:
var myId = document.getElementById('myid');
var a = document.createElement('div');
// probably an input field, original code uses val()
a.textContent = myId.value.trim();
console.log(a.innerHTML);
请注意,String.prototype.trim
是一种ES5方法,这意味着较旧的浏览器(如IE8和更旧的浏览器)可能不会以本机方式使用此方法。而且,textContent
不是跨浏览器的。在这种情况下,您可以这样做:
function trimString(arg) {
var str = String(arg);
return str.match(/[\x09-\x0D\x20\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]*([\s\S]*?)[\x09-\x0D\x20\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]*/)[1];
}
var myId = document.getElementById('myid');
var a = document.createElement('div');
// probably an input field, original code uses val()
var genericText = document.documentElement.textContent ? 'textContent' : 'innerText';
a[genericText] = trimString(myId.value);
console.log(a.innerHTML);
它的作用是HTML转义myId.val()
的值,删除任何前导和尾随空格
正如您已经注意到的,$.trim(myId.val())
只删除任何前导和尾随空格
它使用文本值$.trim(myId.val())
设置一个“dummy”div,这意味着它是它的文本值(没有HTML转义)
在没有参数的jQuery元素上调用.html()
时,将返回子节点的html转义值(在本例中,是您刚才插入的文本)。例如,在HTML中,作为字符转义符,符号AND具有特殊的含义,因此文字符号AND需要以转义形式表示(&;
)
使用纯JavaScript,这相当于以下内容:
var myId = document.getElementById('myid');
var a = document.createElement('div');
// probably an input field, original code uses val()
a.textContent = myId.value.trim();
console.log(a.innerHTML);
请注意,String.prototype.trim
是一种ES5方法,这意味着较旧的浏览器(如IE8和更旧的浏览器)可能不会以本机方式使用此方法。而且,textContent
不是跨浏览器的。在这种情况下,您可以这样做:
function trimString(arg) {
var str = String(arg);
return str.match(/[\x09-\x0D\x20\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]*([\s\S]*?)[\x09-\x0D\x20\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]*/)[1];
}
var myId = document.getElementById('myid');
var a = document.createElement('div');
// probably an input field, original code uses val()
var genericText = document.documentElement.textContent ? 'textContent' : 'innerText';
a[genericText] = trimString(myId.value);
console.log(a.innerHTML);
它被称为Html编码,以下是您的普通JavaScript替代方案:
function htmlEncode(text) {
var encodedText = text.replace(/&/g, '&')
.replace(/"/g, '"')
.replace(/'/g, ''')
.replace(/</g, '<')
.replace(/>/g, '>');
return encodedText;
}
它被称为Html编码,以下是您的普通JavaScript替代方案:
function htmlEncode(text) {
var encodedText = text.replace(/&/g, '&')
.replace(/"/g, '"')
.replace(/'/g, ''')
.replace(/</g, '<')
.replace(/>/g, '>');
return encodedText;
}
从技术上讲,它做的不止这些,但这是它做的一些事情。@Qantas94Heavy:谢谢你的反馈,当我需要它的时候,我就是这么做的。我是不是忽略了什么?事实上,你只是缺少了
——我还以为还有更多。由于它们不是属性,“
和”
不是必需的。谢谢你的帮助:)从技术上讲,它做的不止这些,但这是它做的一些事情。@Qantas94Heavy:谢谢你的反馈,这就是我需要它时所做的。我是不是忽略了什么?事实上,你只是缺少了
——我还以为还有更多。由于它们不是属性,“
和”
不是必需的。感谢您的帮助:)热爱您在这里的工作。如果你知道谷歌的任何关闭,你能确认或否认我在修改后的问题结尾中的问题吗?@Nick:我对库不熟悉,但从方法名称来看,似乎是相同的想法。谢谢。我想是这样:)@Qantas94Heavy:trimString
方法将删除字符串中的所有空白(例如'Helloworld'
'Helloworld'
)。修剪只能替换字符串开头和结尾的空白嘿,伙计。作为一个受过良好教育的悉尼赛德,他有两个比你大的孩子,我得说,虽然你的技术技能可能很棒,但你可能想避开散文编辑人们的问题。除非你的愿望是摆脱任何特质或个性的痕迹,那就是:)热爱你在这里的工作。如果你知道谷歌的任何关闭,你能确认或否认我在修改后的问题结尾中的问题吗?@Nick:我对库不熟悉,但从方法名称来看,似乎是相同的想法。谢谢。我想是这样:)@Qantas94Heavy:trimString
方法将删除字符串中的所有空白(例如'Helloworld'
'Helloworld'
)。修剪只能替换字符串开头和结尾的空白嘿,伙计。作为一个受过良好教育的悉尼赛德,他有两个比你大的孩子,我得说,虽然你的技术技能可能很棒,但你可能想避开散文编辑人们的问题。除非你的愿望是摆脱任何特质或个性的痕迹,那就是:)谢谢你的帮助:)谢谢你的帮助:)