Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.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
Javascript 如何在我的setAttribute函数中内置数组子函数?_Javascript_Arrays - Fatal编程技术网

Javascript 如何在我的setAttribute函数中内置数组子函数?

Javascript 如何在我的setAttribute函数中内置数组子函数?,javascript,arrays,Javascript,Arrays,我编写了一个函数,可以在输入元素中自动插入一个属性(即一个按大小写调整的onclick函数)。它也有一些例外。它看起来是这样的,为了清晰起见有些简化: function insertAttribute() { var allInputs = document.getElementsByTagName('input'); var allInputsCount = allInputs.length; var thatInput = null; for (i = 0; i < allInputs

我编写了一个函数,可以在输入元素中自动插入一个属性(即一个按大小写调整的onclick函数)。它也有一些例外。它看起来是这样的,为了清晰起见有些简化:

function insertAttribute() {
var allInputs = document.getElementsByTagName('input');
var allInputsCount = allInputs.length;
var thatInput = null;
for (i = 0; i < allInputsCount; i++) {
    thatInput = allInputs[i];
    var highlightFunction = "highlightItem('"+thatInput.name+"-row','"+thatInput.name+"-button')";
    if ((thatInput.name != "A") && (thatInput.name != "B") && (thatInput.name != "C"))
        thatInput.setAttribute("onclick",highlightFunction);
    }
}

但这不起作用——该属性仍然插入到异常中。应该怎么做?我需要一个普通的脚本解决方案。我也会很高兴有一个好的教程。正如您可能已经猜到的,这是我第一次使用这样的数组子函数

注释中提供的解决方案,
除外darray.indexOf(thatInput.name)=-1
适用于大多数浏览器,但不适用于IE8。它的脚本调试器说它不支持
indexOf
。它在其他上下文中也有,但在这个上下文中显然没有

同时,我自己也学会了如何通过数组进行脚本循环。这适用于所有浏览器:

var allInputs = document.getElementsByTagName('input');
var allInputsCount = allInputs.length;
var thatInput = null;
for (var i=0; i<allInputsCount; i++) {
    thatInput = allInputs[i];
    var highlightFunction = "highlightItem('"+thatInput.name+"-row','"+thatInput.name+"-button')";
    var exceptedNamesArray = ["A","B","C","A4dTInput","A4eTInput"];
    var excNamesArrayCount = exceptedNamesArray.length;
    var excName = null;
    for (var j=0; j<excNamesArrayCount; j++) {
        excName = exceptedNamesArray[j];
        if (thatInput.name != excName)
        thatInput.setAttribute("onclick",highlightFunction);
    }
}
var allInputs=document.getElementsByTagName('input');
var allinputsunt=allInputs.length;
var-thatInput=null;

对于(var i=0;iyou可以尝试
exceptedArray.indexOf(thatInput.name)=-1
,请参阅中的更多函数,这些函数似乎工作得很好!谢谢,格伦迪!您的解决方案暂时工作得很好,对此我仍然心存感激,但在IE8中测试时没有。有关详细信息,请参阅下面的帖子。是的,这取决于浏览器中的js版本
var allInputs = document.getElementsByTagName('input');
var allInputsCount = allInputs.length;
var thatInput = null;
for (var i=0; i<allInputsCount; i++) {
    thatInput = allInputs[i];
    var highlightFunction = "highlightItem('"+thatInput.name+"-row','"+thatInput.name+"-button')";
    var exceptedNamesArray = ["A","B","C","A4dTInput","A4eTInput"];
    var excNamesArrayCount = exceptedNamesArray.length;
    var excName = null;
    for (var j=0; j<excNamesArrayCount; j++) {
        excName = exceptedNamesArray[j];
        if (thatInput.name != excName)
        thatInput.setAttribute("onclick",highlightFunction);
    }
}