Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
这是做什么的?我可以用vanilla JavaScript实现同样的功能吗?_Javascript_Jquery - Fatal编程技术网

这是做什么的?我可以用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, '&amp;')
        .replace(/"/g, '&quot;')
        .replace(/'/g, '&#39;')
        .replace(/</g, '&lt;')
        .replace(/>/g, '&gt;');
    return encodedText;
}

它被称为Html编码,以下是您的普通JavaScript替代方案:

function htmlEncode(text) {
    var encodedText = text.replace(/&/g, '&amp;')
        .replace(/"/g, '&quot;')
        .replace(/'/g, '&#39;')
        .replace(/</g, '&lt;')
        .replace(/>/g, '&gt;');
    return encodedText;
}


从技术上讲,它做的不止这些,但这是它做的一些事情。@Qantas94Heavy:谢谢你的反馈,当我需要它的时候,我就是这么做的。我是不是忽略了什么?事实上,你只是缺少了
——我还以为还有更多。由于它们不是属性,
不是必需的。谢谢你的帮助:)从技术上讲,它做的不止这些,但这是它做的一些事情。@Qantas94Heavy:谢谢你的反馈,这就是我需要它时所做的。我是不是忽略了什么?事实上,你只是缺少了
——我还以为还有更多。由于它们不是属性,
不是必需的。感谢您的帮助:)热爱您在这里的工作。如果你知道谷歌的任何关闭,你能确认或否认我在修改后的问题结尾中的问题吗?@Nick:我对库不熟悉,但从方法名称来看,似乎是相同的想法。谢谢。我想是这样:)@Qantas94Heavy:
trimString
方法将删除字符串中的所有空白(例如
'Helloworld'
'Helloworld'
)。修剪只能替换字符串开头和结尾的空白嘿,伙计。作为一个受过良好教育的悉尼赛德,他有两个比你大的孩子,我得说,虽然你的技术技能可能很棒,但你可能想避开散文编辑人们的问题。除非你的愿望是摆脱任何特质或个性的痕迹,那就是:)热爱你在这里的工作。如果你知道谷歌的任何关闭,你能确认或否认我在修改后的问题结尾中的问题吗?@Nick:我对库不熟悉,但从方法名称来看,似乎是相同的想法。谢谢。我想是这样:)@Qantas94Heavy:
trimString
方法将删除字符串中的所有空白(例如
'Helloworld'
'Helloworld'
)。修剪只能替换字符串开头和结尾的空白嘿,伙计。作为一个受过良好教育的悉尼赛德,他有两个比你大的孩子,我得说,虽然你的技术技能可能很棒,但你可能想避开散文编辑人们的问题。除非你的愿望是摆脱任何特质或个性的痕迹,那就是:)谢谢你的帮助:)谢谢你的帮助:)