JavaScript中的连锁变量名称

时间:2011-08-04 22:40:55

标签: php javascript html

这个问题并不像我想象的那么简单,我试图将变量的名称定义为report和变量numClicks的实际值的混合。

报告1,报告2,报告3,报告4等......

<?

<script>
var numClicks = 0
</script>  

echo "<img  height =\"16\"  src = \"images/stapler.png\"  

        onclick=\"
        numClicks++;
        var report+numClicks = '".$reports[$i]."';
        return confirm(report+numClicks);

    \">
"
?>

是否可以在JavaScript中声明和定义这样的变量,还是必须在加载页面之前预先定义它们?


$reports[$i]是一个变量,其值是报告的名称。

我想要做的是让用户一起批量处理几个报告,然后将这些信息发送给MySQL。

3 个答案:

答案 0 :(得分:1)

你不能这样做。也许如果你向我们展示你真正想要实现的目标,我们可以帮助你弄清楚如何去做。

编写代码时必须知道局部变量名称:

var myVariableName;

myVariableName是标识符,而不是javascript表达式。

您可以从表达式创建全局变量,因为全局变量实际上只是窗口对象的属性。所以,你可以像这样声明一个全局变量:

window["report"+numClicks] = "foo";

您还可以创建自己的数组或对象,并使用表达式作为键或索引在对象的数组或属性中指定值。

var reportArray = [];              // declare array
reportArray[numClicks] = "foo";    // assign array entry

或者,你可以使用一个对象:

var reports = {};
reports[numClicks] = "foo";         // assign object property

在你的特定代码示例中,我并不完全遵循你想要做的事情(如果这就是这个,我不会很好地阅读PHP)。但是,我认为这一切都可以改为:

onclick="return(confirm('".$reports[$i]."'))"

或类似的东西(你可能必须修复它的服务器端部分)。你不需要任何局部变量来做到这一点。

答案 1 :(得分:1)

如果report是您可以执行的对象:

var report = {};    
report['click'+ numClicks] = 'somestuff';
console.log(report.click1); // logs 'somestuff'

答案 2 :(得分:0)

这是一种在php和javascript之间传递变量的更简洁方法

的settings.php

<?php
    var settings = new array(
        "name" => "foo",
        "age" => "bar",
    );
    $json = json_encode(settings);
    echo "var global_settings ={$json};"
?>

HTML / JS

<script type="text/javascript" src="settings.php"></script>
<script type="text/javascript">
    alert(global_settings.name);
    alert(global_settings.age);
</script>