【问题标题】:passing php variable in onClick function在 onClick 函数中传递 php 变量
【发布时间】:2011-07-08 07:22:47
【问题描述】:

我想在 onClick 函数中传递 php 变量值。 当我传递 php 变量时,在 UI 中我得到的是变量本身,而不是我需要变量中的值。

下面是代码sn-p,请帮帮我。

<?php
print '<td>'; 
$node  = $name->item(0)->nodeValue;
$insert= "cubicle"."$node<br>";
Echo '<a href= "#" onClick= showDetails("$node");>'. $insert .'</a> ';
print '</td>';
?>

【问题讨论】:

    标签: php javascript html


    【解决方案1】:

    变量解析仅在double quoted strings 中完成。您可以使用字符串连接,或者我觉得更易读的printf [docs]

    printf('<a href= "#" onClick="showDetails(\'%s\');">%s</a> ', $node, $insert);
    

    最好的方法是根本不使用echo HTML,而是在 HTML 中嵌入 PHP:

    <?php
        $node  = $name->item(0)->nodeValue;
        $insert = "cubicle" . $node;
    ?>
    
    <td> 
        <a href= "#" onClick="showDetails('<?php echo $node;?>');">
            <?php echo $insert; ?> <br />
        </a>
    </td>
    

    您不必考虑引号,调试 HTML 也更容易。

    注意:如果$node 代表一个数字,则不需要在参数两边加上引号。

    【讨论】:

    • 谢谢它的工作.. 如何在 showDetails 函数中传递多个参数。
    • @VinodHC:想想 JavaScript 中的函数是如何用多个参数调用的。它是showDetails(a, b, c)。你必须创建这个结构。
    【解决方案2】:

    您不应该将 $node 包装在 '"' 中:

    Echo '<a href= "#" onClick= showDetails($node);>'. $insert .'</a> ';
    

    如果您希望 $node 的值在字符串中,我会这样做:

    Echo '<a href= "#" onClick= showDetails("' . $node. '");>'. $insert .'</a> ';
    

    【讨论】:

      【解决方案3】:
      $var = "Hello World!";
      echo "$var"; // echoes Hello World!
      echo '$var'; // echoes $var
      

      不要混淆"',它们都很重要。如果您在字符串中使用了一些 " 并且不想使用与分隔符相同的字符,请使用以下技巧:

      echo 'I say "Hello" to ' . $name . '!';
      

      【讨论】:

        【解决方案4】:

        我认为您正在搜索 PHP 函数 json_encode,它将 PHP 变量转换为 JavaScript 对象。

        这比在输出中直接传递值更安全。

        【讨论】:

        • 虽然如果值是一个数组,这可能是个好主意(我假设它在这里只是一个字符串),但这并不能解决手头的问题。
        【解决方案5】:
        Echo '<a href= "#" onClick= showDetails("'.$node.'");>'. $insert .'</a> ';
        

        【讨论】:

          【解决方案6】:

          我最近一直在使用花括号而不是串联。我认为它看起来更好/更具可读性,而且大多数情况下我发现它更容易且不易出现人为错误 - 保持所有这些引号!您还需要在 onClick 内的内容周围加上引号。

          而不是这个:

          Echo '<a href= "#" onClick= showDetails($node);>'. $insert .'</a> ';
          

          试试这个:

          Echo '<a href= "#" onClick= "showDetails({$node});">{$insert}</a> ';
          

          作为旁注,我通常使用双引号来包装我的 echo 语句并在其中严格使用单引号。这只是我的风格。不管你怎么做,一定要保持笔直。所以我的版本应该是这样的:

          echo "<a href='#' onClick='showDetails({$node});'>{$insert}</a>";
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2017-02-15
            • 2018-04-19
            • 1970-01-01
            • 2012-03-13
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-08-17
            相关资源
            最近更新 更多