Javascript 替换替代
我正在为易趣编码一个模板。但是,易趣不允许。请更换。下面的代码用于滚动选项卡部分。当用户将鼠标悬停在选项卡(a)上时,相应的制表符div(a)将变为可见 是否有一种变通方法可以让代码在不使用.replace的情况下工作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")
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,你能为这种情况发布一个更好/更有效的解决方案吗?我想知道是否还有其他更好的方法,所以我可以学习。看到我刚刚发布的答案,求求你了,我不喜欢:“,”和这个“);