尝试创建一个由className绑定的脚本并调用另一个函数。
我有这个代码用于className的第一个实例,但是如果我删除脚本第一行中的[0]
它就不再有效了。
<input type="text" value="NOTBound" class="NOTBound"/>
<input type="text" value="Bound value 1" class="Bound"/>
<input type="text" value="NOTBound" class="NOTBound"/>
<input type="text" value="Bound value 2" class="Bound"/>
<script>
inputBound = document.getElementsByClassName('Bound')[0];
inputBound.onfocus = function() {
var input = this.value;
formFunct(input);
}
function formFunct(input) {
console.log('done did the form Funct: ' + input)
}
</script>
如何使用className="Bound"
使其适用于所有输入?我不需要jQuery解决方案。
谢谢。
答案 0 :(得分:6)
使用循环迭代所有元素。
使用Array#forEach
, forEach()
方法为每个数组元素执行一次提供的函数。
另一个替代方法可以使用Array.from
而不是HTMLCollection
返回的getElementsByClassName
,以便您可以直接在返回的结果上调用Array#
方法。
var inputBound = document.getElementsByClassName('Bound');
[].forEach.call(inputBound, function(inputBound) {
inputBound.onfocus = function() {
var input = this.value;
formFunct(input);
}
})
function formFunct(input) {
console.log('done did the form Funct: ' + input)
}
&#13;
<input type="text" value="NOTBound" class="NOTBound" />
<input type="text" value="Bound value 1" class="Bound" />
<input type="text" value="NOTBound" class="NOTBound" />
<input type="text" value="Bound value 2" class="Bound" />
&#13;
备注:强>
[].forEach.call
。for-loop
进行迭代
HTMLCollection
。答案 1 :(得分:3)
迭代<configuration>
<system.web>
<!-- This will handle requests up to 1024MB (1GB) -->
<httpRuntime maxRequestLength="1048576" timeout="3600" />
</system.web>
</configuration>
<!-- IIS Specific Targeting (noted by the system.webServer section) -->
<system.webServer>
<security>
<requestFiltering>
<!-- This will handle requests up to 1024MB (1GB) -->
<requestLimits maxAllowedContentLength="1048576000" />
</requestFiltering>
</security>
</system.webServer>
并将事件处理程序附加到元素。
NodeList
&#13;
// get all elements and convert to array
Array.from(document.getElementsByClassName('Bound'))
// iterate overa array elements
.forEach(function(ele) {
// bind event handler
ele.onfocus = function() {
var input = this.value;
formFunct(input);
}
});
function formFunct(input) {
console.log('done did the form Funct: ' + input)
}
&#13;
答案 2 :(得分:3)
简单地迭代Node
中的所有NodeList
(带有良好的旧for循环:))
inputBounds = document.getElementsByClassName('Bound');
for( var counter = 0; counter < inputBounds.length; inputBounds++ )
{
inputBounds.item( counter ).onfocus = function() {
var input = this.value;
formFunct(input);
}
}