首页 > 解决方案 > 用 PHP 调用 Javascript 函数

问题描述

我正在尝试使用 PHP 调用 javascript 函数。

Javascript函数如下:

<script type="text/javascript">
function printDiv(divName)
{
    var printContents = document.getElementById(divName).innerHTML;
    var originalContents = document.body.innerHTML;
    document.body.innerHTML = printContents;
    window.print();
    document.body.innerHTML = originalContents;
}
</script>

我使用此代码通过 PHP 运行函数:

if (array_key_exists('ykpost', $_POST)) {
    // do something with php
    $printyk = '<script type="text/javascript">printDiv("PrintableArea");</script>';
    echo $printyk;
}

打印内容如下:

<div id="printableArea" class="printDiv">
    //some content with created by php
</div>

我用这个表格发帖:

<form id="ykbarcodepost" method="post">
    <input type="submit" class="btn" value="Print Barcode" name="ykpost" />
</form>

但它不会打开打印窗口。如果我将$printyk变量更改为“Hello”,它会写入 Hello。所以想到了javascript的问题。但是当我尝试使用下面的另一个按钮时

<input type="button" class="btn" onclick="printDiv('printableArea')" value="Print Barcode" />

它显示 printDiv。有什么我看不到的吗?

标签: javascriptphp

解决方案


根据您提供的内容,您的 HTML 中有错误,在此代码中:

...
// do something with php
$printyk = '<script type="text/javascript">printDiv("PrintableArea")
...

PrintableArea应该printableArea

这里要提到的一件事是在混合 if 语句和 HTML 时始终使用替代 if 语法以提高可读性。

这是我在本地机器上复制的有效 PHP 代码:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">

<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>PRINCE Is Not a Cheat-sheet for Emacs</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">

<meta name="generator" content="Prince Backend" />
<meta name="date" content="2020-01-25T19:09:08" />
<meta name="description" content="A mind map for the Emacs commands." />
<link rel="stylesheet" type="text/css" href="style.css" />
</head>

<body>
  <div id="printableArea" class="printDiv">
    //some content with created by php
    <div>ASDAD</div>
  </div>
  <form id="ykbarcodepost" method="post">
  <input type="submit" class="btn" value="Print Barcode" name="ykpost" />
</form>
<script type="text/javascript">
  function printDiv(divName)
  {
      var printContents = document.getElementById(`${divName}`).innerHTML;
      var originalContents = document.body.innerHTML;
      document.body.innerHTML = printContents;
      window.print();
      document.body.innerHTML = originalContents;
  }

  <?php if (array_key_exists('ykpost', $_POST)) : ?>
    // do something with php
    printDiv("printableArea");
  <?php endif ?>
</script>
</body>
</html>

推荐阅读