【问题标题】:Dynamic Variables and javascript loops and checks动态变量和 javascript 循环和检查
【发布时间】:2014-07-25 06:59:40
【问题描述】:

我有以下问题: 我正在为我的网站创建此检查,但我无法使其正常工作。我有一系列使用 PHP 创建的变量,这些变量从我的数据库中获取信息。每个变量都有一个特定的值,它是一个名称,比如说“示例 1”。变量会自动创建,因此如果数据库中有 10 个声音,那么我将有“示例 1”、“示例 2”等等......其中的每一个都包含在名为 test_1、test_2 的变量中...... 当我需要检查下拉列表中的选定值时,问题出现在 javascript 中。根据选择的值,下一个下拉菜单会相应更改。 让我在里面放一些代码:

var elem = document.getElementById('bla');
var lengthtot = vartot.length;
for(var a = 0; a<lengthtot; a++){       
    if(elem.options[elem.selectedIndex].value == test_[a]){
        alert("it works");

问题在于“== test_[a]”。我不能让它工作,我试过 [a],+a,.a,$a。我想要 PHP bla_$i = ${'ble_'.$i}

我一直在到处寻找答案,但仍然没有找到。请帮帮我。

【问题讨论】:

    标签: javascript variables loops dynamic


    【解决方案1】:

    您可以操作一个对象而不是多个变量。

    var tests = {
        1: 'value of your previous test_1 variable',
        ...
    }
    

    在你的代码中:

    if (elem.options[elem.selectedIndex].value === tests[a]) {
    

    【讨论】:

    • 我需要多个变量,因为每个变量都连接到另一个函数,每个函数都有不同的作用
    • 如果您真的需要为每个 var 使用不同的函数,您可以直接在对象内部使用它:jsfiddle.net/jpZb7
    • 我正在尝试使用您的方法,但是如何自动将值和函数分配给对象?我的意思是:1:{ value: test_[a] fn: func_[a] 你看,它总是同样的问题,因为变量和函数会根据数据库而变化,我需要它自动完成
    • "函数会根据数据库而变化" 我不确定我是否理解正确。该函数的代码是否直接来自您的 PHP 调用?还是根据 PHP 返回的值调用不同的客户端函数?
    • 函数从php自动生成,然后导出到javascript中使用。我的意思是每个函数的参数根据使用的数据库更改为php。无论如何,自从你提到它们以来,我一直在研究对象,我想我找到了使用 php 对象的解决方案,然后将它们导出到 javascript 中。我将在完成工作后立即发布代码,以向您展示我的意思。无论如何,你的建议是我发现新的编程领域的关键,我感谢你,虽然不是我希望的解决方案。
    【解决方案2】:

    我确实按照你所说的那样处理了对象,但是我必须从 php 中完成它才能使其自动工作,这是我编写的代码,我对其进行了测试,所以它没有问题:

        <script type="text/javascript">
        <?php
            echo "var test125 = {\n";           
            for ($i = 0; $i <= $mycounterlength; $i++){             
            echo "$i: {\n";
            echo "value: ${'bla_'.$i},\n";
            echo "func: ${'ble_'.$i}\n";
            echo "},\n";
            }
        echo "}\n";
    ?>
    </script>
    

    无论如何,再次感谢您的建议,这很有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-13
      • 2021-04-09
      • 1970-01-01
      • 1970-01-01
      • 2014-11-26
      • 1970-01-01
      相关资源
      最近更新 更多