0

以下输出

href="javascript:showBed(" a114:1')'

当我想要它在表格上时

href="javascript:showBed('A114:1')"

为了让javascript工作。我看了一下这个网站,但无法让它工作,所以我放弃了。也许你可以给我一个关于正确语法的提示?

  echo("<a href='javascript:showBed('" . $row['Bed'] ."')' target='main' class='larmlink'>link</a>");

谢谢 =)

4

8 回答 8

1

当您想将变量数据输出到 JavaScript 时,最好使用json_encode()自动转义所有特殊字符。htmlspecialchars()转义用于 HTML 属性值的任何值。

echo '<a href="',
  htmlspecialchars('javascript:showBed(' .  json_encode($row['Bed']) .   ')'),
  '" target="main" class="larmlink">link</a>';

请注意,我对 PHP 字符串文字使用单引号,这样 PHP 就不必在我的字符串中搜索要替换的变量。你不必这样做,但我推荐它。

于 2013-05-02T17:09:51.517 回答
1

您的输出不是它会输出的内容,而是它解释方式(提示:不要查看已解析的 DOM 树,请查看源代码)。

echo("<a href='javascript:showBed('" . $row['Bed'] ."')' ...

==>

echo("<a href=\"javascript:showBed('" . $row['Bed'] ."')\" ...
于 2013-05-02T17:09:56.997 回答
1

您确实应该在 HTML 元素属性周围使用更标准的双引号。因此,最好在 PHP 中使用单引号。我建议这样做:

echo('<a href="javascript:showBed(\'' . $row['Bed'] .'\')" target="main" class="larmlink">link</a>');
于 2013-05-02T17:10:00.737 回答
1

要打印双引号字符,您可以通过执行转义它\"

echo("<a href=\"javascript:showBed('" . $row['bed'] ."')\" target='main' class='larmlink'>link</a>");

现场演示

于 2013-05-02T17:10:15.680 回答
0

使用heredoc 语法通常会使带有混合引号的代码更容易理解:

echo <<<EOD
    <a href="javascript:showBed('$row[Bed]')" target="main" class="larmlink">link</a>
EOD;

正如其他人提到的,如果您的值$row['Bed']可能包含单引号或双引号,则必须使用addslashes.

于 2013-05-02T17:16:23.813 回答
0

I like to use sprintf (or printf, but sprintf is easier to refactor) for long strings like this so it's easy to see the template:

echo sprintf("<a href='javascript:showBed(\"%s\")' target='main' class='larmlink'>link</a>", $row['Bed']);

I'd also consider using addslashes on the $row['Bed'] variable in case it has quotes in it.

于 2013-05-02T17:17:16.340 回答
0

You can use the heredoc syntax to avoid to escape anything:

echo <<<LOD
<a href="javascript:showBed('{$row['Bed']}')" target="main" class="larmlink">link</a>
LOD;

Notice that if your variables contains some quotes you must use the addslashes function or str_replace before.

Another good practive is to separate systematically all the html content from php code:

<a href="javascript:showBed('<?php
echo $row['Bed'];
?>')" target="main" class="larmlink">link</a>
于 2013-05-02T17:25:27.490 回答
-1

试试这个:

echo("<a href='javascript:showBed(\"" . $row['Bed'] ."\")' target='main' class='larmlink'>link</a>");
于 2013-05-02T17:09:23.053 回答