javascript - 用 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。有什么我看不到的吗?
解决方案
根据您提供的内容,您的 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>
推荐阅读
- java - 使用 2 个 Transaction 实例和嵌套方法不会回滚事务
- kubernetes - 在同一集群中使用具有不同自动扩缩器 API 的不同 pod 是否有任何陷阱
- vue.js - Vue js 2中总计的甜甜圈顶点图表动态值
- python-3.x - pyinstaller 软件包未安装在 WINDOWS 10 的 spyder 5.0.3 中
- javascript - 如何在组织结构图 Highcharts 中制作弹出窗口
- devexpress - dxDataGrids 不适用于 Bootstrap 选项卡
- android - 在 aws chime 中找不到模块“fs-extra”
- wordpress - WordPress 编辑屏幕上的 Cloudflare 521 错误
- python - 使用 FFT 的 2D 正弦波角度
- components - 将 mule 消息传递到 Mule 4.3 CE 中的 java 组件