Javascript 除了对每个元素进行函数调用外,还有没有更通用的方法对HTML元素调用JS函数?
目前,我对每个元素进行了函数调用,如下所示:Javascript 除了对每个元素进行函数调用外,还有没有更通用的方法对HTML元素调用JS函数?,javascript,Javascript,目前,我对每个元素进行了函数调用,如下所示: <textarea id="comment" cols=70 rows=5 onblur="cleanWordClipboard(this)" /> 到所有TextArea元素,所以 <textarea id="comment" cols=70 rows=5/> 保持原样。我想的是类似CSS的东西,它有规则将行为应用于某一类型的所有元素 谢谢 编辑1 到目前为止,我正在尝试,在我的页面底部,这实际上是一个包含所有动态页
<textarea id="comment" cols=70 rows=5 onblur="cleanWordClipboard(this)" />
到所有TextArea元素,所以
<textarea id="comment" cols=70 rows=5/>
保持原样。我想的是类似CSS的东西,它有规则将行为应用于某一类型的所有元素
谢谢
编辑1
到目前为止,我正在尝试,在我的页面底部,这实际上是一个包含所有动态页面的主布局页面(使用ASP.NET MVC):
//感谢Johnathan Hedley的代码。
var交换码=新阵列(8211、8212、8216、8217、8220、8221、8226、8230);//来自char at的dec代码
变量交换字符串=新数组(“-”、“-”、“'、“'”、“\”、“\”、“\”、“*”、“…”);
函数cleanWordClipboard(输入){
//调试新代码
//对于(i=0;i
编辑2
[].forEach.call(document.getElementsByClassName('plaintextbox'),函数(element){
元素。addEventListener('blur',cleanWordClipboard);
//在cleanWordClipboard调用中,元素将如下所示
});
//感谢Johnathan Hedley的代码。
var交换码=新阵列(8211、8212、8216、8217、8220、8221、8226、8230);//来自char at的dec代码
变量交换字符串=新数组(“-”、“-”、“'、“'”、“\”、“\”、“\”、“*”、“…”);
函数cleanWordClipboard(输入){
//调试新代码
//对于(i=0;i
使用Jquery,它将适用于所有textarea
元素
$('textarea').blur(function(){
// code from cleanWordClipboard
});
或者干脆
$('textarea').blur(cleanWordClipboard);
使用Jquery,它将适用于所有
textarea
元素
$('textarea').blur(function(){
// code from cleanWordClipboard
});
或者干脆
$('textarea').blur(cleanWordClipboard);
是的,您可以在vanilla JavaScript中执行此操作:
[].forEach.call(document.getElementsByClassName('comment'), function(element){
element.addEventListener('blur', cleanWordClipboard);
// the element will be this in the cleanWordClipboard call
});
请注意,我假设您使用
class=comment
而不是id=comment
,因为文档中只有一个元素可以具有给定的id。是的,您可以在普通JavaScript中执行此操作:
[].forEach.call(document.getElementsByClassName('comment'), function(element){
element.addEventListener('blur', cleanWordClipboard);
// the element will be this in the cleanWordClipboard call
});
注意,我假设您使用
class=comment
而不是id=comment
,因为文档中只有一个元素可以具有给定的id。使用jQuery的简单方法是$(“textarea”).blur(cleanWordClipboard)使用jQuery的简单方法是$(“textarea”).blur(cleanWordClipboard)
这是一种方法:这是一种方法:使用es6,您可以执行Array.from(document.querySelectorAll('.comment')).forEach(…)代码>@FlorianMargaine,它既不短也不清晰;)@SamJolly将其更改为document.querySelectorAll(“textarea”)
是的,但我真的建议使用比“textearea”更能证明未来的东西,因为一旦你的页面中有一个与注释无关的textarea,它就会崩溃。@SamJolly不要使用input
(参数)在cleanWordClipboard
中,但此
(请参阅我答案中的注释)。使用es6,您可以执行Array.from(document.querySelectorAll('.comment')).forEach(…)代码>@FlorianMargaine,它既不短也不清晰;)@SamJolly将其更改为document.querySelectorAll(“textarea”)
是的,但我真的建议使用比“textearea”更能证明未来的东西,因为一旦你的页面中有一个与注释无关的textarea,它就会崩溃。@SamJolly不要使用input
(参数)在cleanWordClipboard
中,但此
(请参阅我回答中的注释)。将我的完整代码添加到EDIT1,但由于某些原因,EDIT1无法工作。您是否在文件中包含Jquery
?是的。这是为了在@dystroy建议我使用的函数中引用“input”而不是“this”。感谢您的帮助,非常感谢。将我的完整代码添加到EDIT1,但由于某些原因,EDIT1无法工作。您是否在文件中包含Jquery
?是的。这是为了在@dystroy建议我使用的函数中引用“input”而不是“this”。谢谢你的帮助,非常感谢。