【问题标题】:for loop in javascript to get the values in select listjavascript中的for循环以获取选择列表中的值
【发布时间】:2015-07-30 04:36:14
【问题描述】:

我有一个代码,我在选择类别时获取产品,但我希望这些产品显示在选择框中。代码在 JavaScript 中。 我的代码不起作用,我正在使用 for 循环在选择框中显示产品。 我的代码如下:

<script>
    var abc = {
        $finprolist
    } // product list with category {4:bat,ball}

    function getid() {
        var e = document.getElementById("category");
        var cate = e.options[e.selectedIndex].value; //onselect category id

        var check = abc[cate];
        alert(check); //getting products here based on category selected


        var productsfin = '';
        productsfin += '<option value="">Select Product</option>';

        for (var i = 0; i < check.length; i++) {
            productsfin += '<option value="' + check[i] + '">' + check[i] + '</option>';
        }
    }
</script>

直到警告(检查)它现在工作正常,我尝试在 for 循环中打印这些产品,以在选择框中显示它不工作。请帮忙..

【问题讨论】:

  • 我的代码不工作 - 什么不工作?您是否将该 HTML 字符串添加到 DOM 中?如果是,那怎么办?
  • 在 var abc 中我得到像 {4: bat, ball,chair} 这样的数组,然后我在 javascript 中使用它。 @b0s3 我没有向 DOM 添加 html 字符串。
  • 那么您遇到了什么错误?尝试登录productsfin 看看你得到了什么。
  • 实际上我没有收到任何错误,但没有打印任何内容,甚至选择列表也没有。
  • 请在 for 循环中放置一个警报并检查它是否正常工作?另外请让我知道它在支票警报中显示的值是多少?

标签: javascript php html smarty prestashop


【解决方案1】:

您的代码格式正确:

var abc = {$finprolist} // product list with category {4:bat,ball}
function getid(){
    var e = document.getElementById("category");
    var cate = e.options[e.selectedIndex].value;//onselect category id
    var check = abc[cate];
    alert (check);//getting products here based on category selected
    var productsfin = '';
    productsfin += '<option value="">Select Product</option>';
    for(var i=0;i< check.length;i++){
        productsfin +=  '<option value="' + check[i] + '">' + check[i] + '</option>';
    }
}

所以如果 abc 是 {4:"bat,ball,chair"} 那么检查应该是:

check=abc[cate].split(',');

abc={4:"bat,ball,chair"}

check=abc[4].split(',');

var productsfin = '';
productsfin += '<option value="">Select Product</option>';
for(var i=0;i< check.length;i++){
    productsfin +=  '<option value="' + check[i] + '">' + check[i] + '</option>';
}
alert (productsfin);
  

我仍然不确定您是否正确定义了 abc。它通常应该更像 abc=$finprolist 而不是 abc={$finprolist} 或 abc=[$finprolist]

在第二种情况下,检查将是check=abc[0][cate].split(',')

【讨论】:

  • abc 是这样的: {"4":"bat,ball,chair","86":"ballon,chair1} 和 abc[cate] 只得到 bat,ball,chair 选择4.我只需要把这个产品放到for循环中,然后在选择列表中显示。而for循环代码有问题。
【解决方案2】:

那是什么?

var abc = {$finprolist} // product list with category {4:bat,ball}

看起来确实不对。

我不知道你在这里做什么,但它看起来像融合 PHP 和 javascript,所以它可能是:

var abc = {<?php echo $finprolist; ?>} // product list with category {4:bat,ball}

但是:变量 $finprolist 必须是 JSON 中的字符串

【讨论】:

  • 它在 prestashop 的 tpl 文件中调用一个 php 数组。它是正确的,我只需要如何在 javascript 的选择框中获取产品。
  • 哦,这是 prestashop 的聪明代码。我明白了,下次你需要准确一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-18
  • 2016-08-12
  • 2019-04-06
  • 2018-11-11
  • 2023-01-14
  • 1970-01-01
相关资源
最近更新 更多