Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.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 Jquery:匹配字符串和对象两个数组的索引以替换对象中的文本?_Javascript_Jquery_Arrays - Fatal编程技术网

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来进行测试吗?