javascript数组的动态访问

javascript数组的动态访问,javascript,html,arrays,Javascript,Html,Arrays,您好,我有一个dom元素数组(li),如下所示: Array[4] 0:li.ui-steps-item.ui-state-default 1:li.ui-steps-item.ui-state-highlight 2:li.ui-steps-item.ui-state-default.ui-state-disabled 3:li.ui-steps-item.ui-state-default.ui-state-disabled 我有一个click事件,正在向列表中添加一个类。意味着当我单击时,

您好,我有一个dom元素数组(li),如下所示:

Array[4]
0:li.ui-steps-item.ui-state-default
1:li.ui-steps-item.ui-state-highlight
2:li.ui-steps-item.ui-state-default.ui-state-disabled
3:li.ui-steps-item.ui-state-default.ui-state-disabled
我有一个click事件,正在向列表中添加一个类。意味着当我单击时,如果li不是激活的li,则其他li的类将附加此额外类

private _btnClick(_btn: any, config:any):void {
    var nodesArray=Array.prototype.slice.call(this._vcr.element.nativeElement.querySelectorAll('li.ui-steps-item'));
    for (let x in nodesArray) {
        if (nodesArray[x] != nodesArray[this._activeIndex]) {
            nodesArray[x].classList.add('ui-state-disabled');
            console.log(nodesArray[x]);
        }
    }
}
现在我需要实现的是,我需要在活动li之前向items(lis)添加一个新类,并在活动li之后向lis添加另一个类。或者仅将类
ui state disabled
添加到活动li之后的li中。我该怎么做?有什么想法吗,伙计们

单击按钮代码:

private _btnClick(_btn: any, config:any):void {
        this.buttonEvent.emit({btn:_btn, formBtns:this._formBtn}); // Event emitter

        let arrLen: any = config.length-1;

        if (_btn.BtnType=="next"){
            if (this._activeIndex < config.length -1) {
                this._activeIndex++;
            }
            if (this._activeIndex == arrLen){
                _btn.label = "Confirm";
                // _btn.disabled = true;
                // _btn.class = 'btn-success';
            }
            for (let x in this._formBtn){
                if (this._formBtn[x].BtnType  == "previous"){
                    this._formBtn[x].disabled = false;
                    this._formBtn[x].hidden = false;
                    break;
                }

            }
        }
        else if (_btn.BtnType=="previous"){
            this._activeIndex--;
            for (let x in this._formBtn){
                if (this._formBtn[x].BtnType  == "previous"){
                    if(this._activeIndex == 0) {
                        this._formBtn[x].hidden = true;
                        continue;
                    }
                }
                if(this._formBtn[x].BtnType == "next") {
                    if(this._formBtn[x].label == "Confirm") {
                          this._formBtn[x].label = "Next";
                          this._formBtn[x].disabled = false;
                          this._formBtn[x].class = 'btn-text';
                          continue;
                    }
                }
            }
        }
        this._emitStepVal(this._finalConfig);
        // console.log(this._vcr.element.nativeElement.querySelectorAll('li.ui-steps-item'));
        var nodesArray = Array.prototype.slice.call(this._vcr.element.nativeElement.querySelectorAll('li.ui-steps-item'));

        var addClass = false;
        for (var i = 0; i < nodesArray.length; i++) {
            if (addClass) nodesArray[i].classList.add('ui-state-disabled');
            if (i === this._activeIndex) {
                addClass = true;
            }       
        }

    }
private\u btn单击(\u btn:any,config:any):void{
this.buttonEvent.emit({btn:_btn,formBtns:this._formBtn});//事件发射器
设arrLen:any=config.length-1;
如果(_btn.BtnType==“下一步”){
if(this.\u activeIndex
如果只想将类附加到活动
li
之后出现的
li
中,可以执行以下操作:

var addClass=false;
对于(变量i=0;i
在您的评论中,您说“上一个”按钮逻辑工作不正常。我的建议是这样做:

。。。
如果(_btn.BtnType==“上一个”){
如果(此._activeIndex>0){
这个;
}
if(this.\u activeIndex==0){
_btn.disabled=true;
//_btn.hidden=true;//如果要在第一项中隐藏上一个按钮
}
for(让x在这里。\u formBtn){
if(this._formBtn[x].BtnType==“next”){
此._formBtn[x].disabled=false;
此._formBtn[x].hidden=false;
打破
}
}
}
...

可以检查索引,然后在索引后添加值。。javascript中是否有任何函数可以在检查数组中的特定索引后追加值?但在else条件下,activeIndex之前的项也将被添加到正确的位置?是的,请参阅我刚刚发布的备选方案,仅在其后面的
li
中添加一个类。很抱歉,刚刚修复了代码中的一个错误。
classList.add
需要位于
addClass=true
之前,否则它也会将其应用于活动的
li
。您也可以将其放入
类列表中。删除('ui-state-disabled')在添加之前,这样当您单击另一个
li
使其处于活动状态时,它将首先删除在ArrayScreett中出现在它之前的任何
ui state disabled
,您可以将其添加到我的代码中并在答案中更新吗。我真的不明白对不起