var menu_items = 0;
$(".trueol").each(function(){
menu_items = menu_items + 1;
});
var product_price = new Array(menu_items);
var product_name = new Array(menu_items);
$(".price").each(function(){
var i = 0;
product_price[i] = $(this).data("p");
document.write(product_price[i]); /*Inner document.write*/
i++;
});
document.write(product_price[2]); /*Outer document.write*/
$(".menu_product").each(function(){
var j = 0;
product_name[j] = $(this).text();
document.write(product_name[j]); /*Inner document.write*/
j++;
});
document.write(product_name[2]); /* Outer document.write */
这里,内部document.write工作正常,但外部文件打印未定义。 P.S menu_items在迭代后的值为4。问题是什么?
答案 0 :(得分:1)
问题是您在每次迭代时重置计数器(var i = 0
和var j = 0
)。
只需将.each()
与索引一起使用。
// Arrays for your values
var product_price = [];
var product_name = [];
$(".price").each(function(index) {
product_price.push($(this).data("p"));
document.write(product_price[index]); /*Inner document.write*/
});
$(".menu_product").each(function(index) {
product_name.push($(this).text());
document.write(product_name[index]); /*Inner document.write*/
});
// Outer write
document.write(product_name[2]);
答案 1 :(得分:1)
使用each
迭代器索引解释的答案是正确的,但是你的问题太复杂了。您可以简单地将值推送到数组的末尾并错过任何计数......
var product_price = [];
var product_name = [];
$(".price").each(function(){
var value = $(this).data("p");
product_price.push(value);
document.write(value); /*Inner document.write*/
});
document.write(product_price[2]); /*Outer document.write*/
$(".menu_product").each(function(){
var value = $(this).text();
product_name.push(value);
document.write(value); /*Inner document.write*/
});
document.write(product_name[2]); /* Outer document.write */
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/push
如果您需要在任何时候知道数组中的项目数,请使用
product_price.length
或
product_name.length
另外一个暗示。我假设您使用document.write
作为输出数据以进行调试的方法。请尝试使用console.log("text");
,然后打开浏览器控制台(通常是F12并转到控制台选项卡)。
答案 2 :(得分:0)
尝试在计数器设置为push()
的每次迭代中使用0
,
var product_name = [],
product_price = [];
$(".price").each(function(){
t = $(this).data("p");
document.write(t); /*Inner document.write*/
product_price.push(t); // use push here
});
document.write(product_price[2]); /*Outer document.write*/
$(".menu_product").each(function(){
t = $(this).text();
document.write(t); /*Inner document.write*/
product_name.push(t); // use push here
});
document.write(product_name[2]); /* Outer document.write */