繁体   English   中英

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

[英]Pass PHP string variable to Javascript function

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

我希望Div ID是一个变量,所以我可以设置变量然后调用该函数。 如果我在下面的示例中硬编码Div ID的文字字符串“ floorData2”,它会很好地工作。我有一个PHP变量($ floorDiv),其中包含Div ID,并且想在其中将$ floorDiv替换为“ floorData2”。调用changeBG()函数。

我尝试过单引号,双引号,转义引号。 我仍然无法使其正常工作。 使用变量$ 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;
    }
    ?>

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

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

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

双引号字符串中的变量解析的更多详细信息,您可以查看此php文档变量解析

PHP替代语法对于HTML模板更容易

<?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 ?>

尝试这个

<?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;
}
?>
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;
    }

?>

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

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

现在调用功能。

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

您可以这样做:

    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非常简单。 希望这些可以帮助您和其他人。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM