将PHP字符串变量传递给Javascript函数

时间:2016-06-16 05:47:18

标签: javascript php

我有一个Javascript函数,可以更改DIV ID的背景颜色。我只是发送DIV ID和颜色。 changeBG(DivID,Color)

我希望Div ID是一个变量,所以我可以设置变量然后调用该函数。如果我硬编码Div ID的文字字符串 - ' floorData2"它可以正常工作在下面的例子中。我有一个PHP变量($ floorDiv),其中包含Div ID,并希望替换' floorData2'在调用changeBG()函数时使用$ floorDiv。

我已经尝试过单引号,双引号,我想到的每种组合中的转义引号。我仍然无法使其发挥作用。使用变量$ floorDiv的正确语法是什么?

<?php
    $floorCount =5;
    $floorNow = 1;
    while ( $floorNow <= $floorCount) {
        $floorDiv = 'floorData1'; /* this will change based on floorNow */
    echo '<div class="FloorH">
            &nbsp;First Floor <button onclick="changeBG(\'floorData2\',\'#F0F\');">Magenta</button>
    </div>';
    echo "<div id='floorData$floorNow'>";

    echo "</div>";
    $floorNow = $floorNow + 1;
    }
    ?>

6 个答案:

答案 0 :(得分:2)

将第5行 - 第7行代码更改为:

echo '<div class="FloorH">
            &nbsp;First Floor <button onclick="changeBG(\'' . $floorDiv . '\',\'#F0F\');">Magenta</button>
      </div>';

因为PHP不会在单引号字符串中解析变量。

双引号字符串中变量解析的更多细节你可以查看这个php文档variable parsing

答案 1 :(得分:1)

HTML模板

PHP alternative syntax更容易

<?php for ($floorNow = 1; $floorNow <= 5; $floorNow++) :
      $floorDiv = 'floorData' . $floorNow;
?>
    <div class="FloorH">
        &nbsp;First Floor
        <button value="<?= htmlspecialchars($floorDiv) ?>" 
                onclick="changeBG(this.value, '#F0F')">Magenta</button>
    </div>
    <div id="<?= $floorDiv ?>"></div>
<?php endfor ?>

答案 2 :(得分:1)

试试这个

<?php
$floorCount =5;
$floorNow = 1;
while ( $floorNow <= $floorCount)
{
    $floorDiv = 'floorData1';
?>
    <div class="FloorH">
        &nbsp;First Floor <button onclick="changeBG('<?=$floorDiv?>','#F0F');">Magenta</button>
    </div>
    <div id='floorData<?=$floorNow?>'>

    </div>
<?php
    $floorNow = $floorNow + 1;
}
?>

答案 3 :(得分:1)

Try this one

<?php
$floorCount =5;
    $floorNow = 1;
    while ( $floorNow <= $floorCount) {
        $floorDiv = 'floorData'.$floorNow; /* this will change based on floorNow */
    echo '<div class="FloorH">
            &nbsp;First Floor <button onclick="changeBG(\''.$floorDiv.'\',\'#F0F\');">Magenta</button>
    </div>';
    echo "<div id='floorData".$floorNow."'>";

    echo "</div>";
    $floorNow = $floorNow + 1;
    }

?>

答案 4 :(得分:0)

是的,你可以轻松地做到。假设你有功能。

  <script>
  function test(param)
 {
    alert(param);
 }
 </script>

现在要调用函数。

<script>
  test("<?php echo addslashes($a) ; ?>");
</script>

答案 5 :(得分:0)

你可以这样做:

    echo "<div class=\"FloorH\">
            &nbsp;First Floor <button onclick=\"changeBG(\"{$floorDiv}\",\'#F0F\');\">Magenta</button>
    </div>";

或者像这样使用HereDoc:

    echo <<<HTML
    <div class="FloorH">
            &nbsp;First Floor <button       onclick="changeBG('{$floorDiv}','#F0F');">Magenta</button>
    </div>
    <div id='floorData$floorNow'></div>
HTML;

正如您所见,HereDoc非常简单。 希望这些可以帮助你和其他人。