Объединенное имя переменной в JavaScript
Эта проблема не так проста, как я думал, я пытаюсь определить имя переменной как смесь 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 ответа
Так нельзя. Возможно, если вы покажете нам больше, чего вы на самом деле пытаетесь достичь, мы поможем вам понять, как это сделать.
Имена локальных переменных должны быть известны во время написания кода:
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]."'))"
или что-то в этом роде (вам может потребоваться исправить его на стороне сервера). Вам не нужны локальные переменные для этого.
Если report
это объект, который вы можете сделать:
var report = {};
report['click'+ numClicks] = 'somestuff';
console.log(report.click1); // logs 'somestuff'
Это более чистый способ передачи переменных между 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>