Javascript Jquery:匹配字符串和对象两个数组的索引以替换对象中的文本?
我有两个数组,一个是字符串数组,另一个是对象数组。每个对象上的索引都对应,我想用字符串数组中相应的文本替换对象数组中每个对象的文本 例如,我有这样一个数组:Javascript Jquery:匹配字符串和对象两个数组的索引以替换对象中的文本?,javascript,jquery,arrays,Javascript,Jquery,Arrays,我有两个数组,一个是字符串数组,另一个是对象数组。每个对象上的索引都对应,我想用字符串数组中相应的文本替换对象数组中每个对象的文本 例如,我有这样一个数组: var textarr = ["value1", "value2", "value3"] var spans = $("span.myClass"); for(i=0;i<spans.length;i++){ spans[i].innerHTML = textarr[i]; } 以及一个Jquery对象数组,其中包含一组sp
var textarr = ["value1", "value2", "value3"]
var spans = $("span.myClass");
for(i=0;i<spans.length;i++){
spans[i].innerHTML = textarr[i];
}
以及一个Jquery对象数组,其中包含一组span元素:
var spans = $("span.myClass");
var spanarr = $.makeArray(spans);
我试图使用$.each()对每个跨度进行迭代,并使用文本数组的相应索引为当前跨度分配文本值
我试过几种不同的方法,但似乎都不管用。我在这里遗漏了一些逻辑,但为什么这行不通呢
i = 0;
jQuery.each(spanarr, function() {
$(this).text(textarr[i]);
i++;
});
编辑:
我想可能是我的其他功能导致了这个不起作用。以下是整个脚本:
$("span input:radio").click(function() {
if (($(this).is(":checked")) == true) {
var parent = $(this).parent();
var aunts = parent.parent().children();
var parentIndex = aunts.index(parent);
var indexToNthChild = parentIndex + 1;
var otherSpans = $(".DropDownMenu span:nth-child(" + indexToNthChild + ")");
var position = parent.position();
var topValue = position.top;
var smallPrice = otherSpans.children("span.dropDownPrice");
var pricearr = jQuery.makeArray(smallPrice);
var textarr = [];
jQuery.each(pricearr, function() {
textarr[i] = $(this).text();
});
alert(textarr); // Returns all the text values expected in array
var changers = $(".bigPriceChanger");
var changerarr = $.makeArray(changers);
$(".DropDownMenu").css({ "top": "-" + topValue + "px" });
$(".DropDownMenu span").css("background-image", "none");
parent.css({ "background": "#f3f1e7 url(assets/images/branding/DropDownArrow.gif) no-repeat right" });
otherSpans.css({ "background": "#f3f1e7 url(assets/images/branding/DropDownArrow.gif) no-repeat right" });
alert(changearr); // Returns all span objects in array
i = 0;
jQuery.each(changearr, function() {
$(this).text(textarr[i]);
i++;
});
}
});
我想你不需要调用makeArray。只要写下:
i = 0;
jQuery.each($("span.myClass"), function() {
$(this).text(textarr[i++]);
});
您可能想尝试以下方法:
var textarr = ["value1", "value2", "value3"]
var spans = $("span.myClass");
for(i=0;i<spans.length;i++){
spans[i].innerHTML = textarr[i];
}
var span=$(“span.myClass”);
对于(i=0;iTry
虽然makeArray
调用是多余的,但代码是很好的
一定是别的地方出了差错
以下是您在firefox中运行良好的代码
要编辑,请转到我认为您的代码不起作用,因为我定义的变量超出了它的范围
可能有更好的解决方案,但您可以尝试以下方法:
function createF() {
var i = 0;
function f() {
$(this).text(textarr[i]);
i++;
}
return f;
}
f = createF();
jQuery.each(spanarr, f);
调用$.makeArray
的原因是什么?您可以像这样迭代跨度
$("span.myClass").each(function(i) {
alert(textarr[i]);
$(this).text(textarr[i]);
});
我不想以“这终究是一场梦”来结束这个问题,但事实证明我的浏览器被吓坏了
我已经检查了我的脚本(以及每个人建议的百万个版本)在IE8和其他人的firefox中,low和low都可以使用。这是我尝试的第一件事,我只是再试了一次,但仍然不起作用。我刚刚在一个示例文档中测试了它,它对我起作用。你确定选择器确实在返回跨距吗?当它不起作用时会发生什么事情吗?另外,请尝试放置console.lo是的,我已经测试过了,它确实返回了跨距,当我将数组放入警报时,我得到了正确数量的[Object HtmlSpanObject]。如果我只使用jquery选择器($(“span.myclass”)),它会返回[Object Object].我只是再试了一次,并用上面的例子来尝试,还有我的变量,它的对象数组带有跨距,它仍然没有改变文本。我还测试了文本数组,它也输出了正确的值。我被难住了!文本没有改变。为什么++在括号中?我以前没有看到过…?我“很抱歉,我应该澄清一下;当我只选择所有类时,它们一次返回索引0,但当我使用make array时,每个span都是不同的索引,因为如果我只执行$(“span.myClass”),它不会像预期的那样返回对象数组,我得到[object object]什么?你可以在上面使用每一个,就像我的文章中所说明的那样。我们可以用一些HTML来进行测试吗?