Javascript 替换替代

Javascript 替换替代,javascript,css,Javascript,Css,我正在为易趣编码一个模板。但是,易趣不允许。请更换。下面的代码用于滚动选项卡部分。当用户将鼠标悬停在选项卡(a)上时,相应的制表符div(a)将变为可见 是否有一种变通方法可以让代码在不使用.replace的情况下工作 var divs = new Array(); divs.push("contentPayment"); divs.push("contentShipping"); divs.push("contentWarranty"); divs.push("contentContact")

我正在为易趣编码一个模板。但是,易趣不允许。请更换。下面的代码用于滚动选项卡部分。当用户将鼠标悬停在选项卡(a)上时,相应的制表符div(a)将变为可见

是否有一种变通方法可以让代码在不使用.replace的情况下工作

var divs = new Array();
divs.push("contentPayment");
divs.push("contentShipping");
divs.push("contentWarranty");
divs.push("contentContact");
var navs = new Array();
navs.push("nav1");
navs.push("nav2");
navs.push("nav3");
navs.push("nav4");
///////////////////////////////////////


function hasClass(element, cls) {
    return (' ' + element.className + ' ').indexOf(' ' + cls + ' ') > -1;
}
///////////////////////////////////////////////////////////////////////


function toggleDisplay(id) {
    for (var i = 0; i < divs.length; i++) {
        var item = document.getElementById(divs[i]);
        item.style.display = 'none';
    }
    var target = document.getElementById(id);
    target.style.display = 'block';
    /////////////////////////////////////////////////////////////////////////////////////////////////////// 
    ////////////////////////////PAYMENT IS HOVERED////////////////////////////////////////////////////////
    if (id == "contentPayment") {
        var CurrentTab = document.getElementById("nav1");
        var AlreadyActive = hasClass(CurrentTab, "tabActive");
        if (AlreadyActive === false) {
            for (var i = 0; i < navs.length; i++) {
                var otherTabs = document.getElementById(navs[i]);
                otherTabs.className = otherTabs.className.replace(' tabActive', '');
            }
            CurrentTab.className += " " + "tabActive";
        }
    }

    /////////////////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////Shipping IS HOVERED////////////////////////////////////////////////////////
    if (id == "contentShipping") {
        var CurrentTab = document.getElementById("nav2");
        var AlreadyActive = hasClass(CurrentTab, "tabActive");
        if (AlreadyActive === false) {
            for (var i = 0; i < navs.length; i++) {
                var otherTabs = document.getElementById(navs[i]);
                otherTabs.className = otherTabs.className.replace(' tabActive', '');
            }
            CurrentTab.className += " " + "tabActive";
        }
    }

    ///////////////////////////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////Warranty IS HOVERED////////////////////////////////////////////////////////
    if (id == "contentWarranty") {
        var CurrentTab = document.getElementById("nav3");
        var AlreadyActive = hasClass(CurrentTab, "tabActive");
        if (AlreadyActive === false) {
            for (var i = 0; i < navs.length; i++) {
                var otherTabs = document.getElementById(navs[i]);
                otherTabs.className = otherTabs.className.replace(' tabActive', '');
            }
            CurrentTab.className += " " + "tabActive";
        }
    }

    ///////////////////////////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////Contact IS HOVERED////////////////////////////////////////////////////////
    if (id == "contentContact") {
        var CurrentTab = document.getElementById("nav4");
        var AlreadyActive = hasClass(CurrentTab, "tabActive");
        if (AlreadyActive === false) {
            for (var i = 0; i < navs.length; i++) {
                var otherTabs = document.getElementById(navs[i]);
                otherTabs.className = otherTabs.className.replace(' tabActive', '');
            }
            CurrentTab.className += " " + "tabActive";
        }
    }
}
var divs=new Array();
divs.push(“内容支付”);
部门推动(“内容运输”);
分区推送(“内容保证”);
分区推送(“内容联系人”);
var navs=新数组();
导航推送(“导航1”);
导航推送(“导航2”);
导航推送(“导航3”);
导航推送(“导航4”);
///////////////////////////////////////
函数类(元素,cls){
返回(“”+element.className+“”).indexOf(“”+cls+“”)>-1;
}
///////////////////////////////////////////////////////////////////////
功能切换显示(id){
对于(变量i=0;i
您可以尝试将其作为
replace
功能的替代

String.prototype.fakeReplace = function(str, newstr) {
    return this.split(str).join(newstr);
};

var str = "Welcome javascript";
str = str.fakeReplace('javascript', '');
alert(str); // Welcome

.

要获得更有效但稍长的方法,请使用以下方法:

String.prototype.myReplace = function(pattern, nw) {
   var curidx = 0, len = this.length, patlen = pattern.length, res = "";
   while(curidx < len) {
       var nwidx = this.indexOf(pattern, curidx);
       console.log(nwidx);
       if(nwidx == -1) {
           break;
       }
       res = res + this.substr(curidx, nwidx - curidx);
       res = res + nw;
       curidx = nwidx + patlen;
   }
   return res;
};
alert("Glee is awesome".myReplace("awesome", "very very very awesome"));
String.prototype.myReplace=函数(模式,nw){
var curidx=0,len=this.length,patlen=pattern.length,res=“”;
while(curidx
查看它的实际操作:


希望有帮助

我想知道做
String.prototype.rpl=String.prototype.replace是否有效foo.rpl(/x/,“y”)
。为什么不使用数组文本,例如
var arr=['foo',bar',baz']?是的,这会起作用,除了它创建一个中间数组,并使用一个调用
.join()
,这是已知的效率不高的方法。@Abody97,你能为这种情况发布一个更好/更有效的解决方案吗?我想知道是否还有其他更好的方法,所以我可以学习。看到我刚刚发布的答案,求求你了,我不喜欢:“,”和这个“);