这个问题并不像我想象的那么简单,我试图将变量的名称定义为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。
答案 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>