我正在使用PHP和Javascript。我将arrayList从PHP文件返回到PHP网页;在PHP网页中,我想在表格中显示数组列表,但其中一个字段是" state"可以是"成功或被拒绝"如果成功,td表显示span bootstrap图标,否则也是。我使用Javascript函数作为返回范围图标,但它无法读取参数" state"调用功能。
我的js文件:
function getStateIcon(strState) {
var strHtml = '';
if (strState === "Success") {
strHtml = '<span class="label label-success">' + strState +'</span>';
} else if (strState === "Rejected") {
strHtml = '<span class="label label-warning">' + strState + '</span>';
}
return strHtml;
}
我的php网页:
<table>
//headers.....
//body
<?php
include_once '../../Model/RequestDto.php';
$list = new ArrayObject();
if (isset($_SESSION["list"]) == null) {
echo 'not found results';
} else {
$list = $_SESSION["list"];
foreach ($list as $val) {
?>
<tr>
<td><?php echo $val->getID?></td>
<td><?php echo $val->getDate()?></td>
<td><script type="text/javascript">getStateIcon(<?php echo $val->getState()?>);</script></td> //here i want pass parameter state to the js function for return span icon and draw td, but this show empty
</tr>
<?php
}
}
?>
</tbody>
</table>
答案 0 :(得分:0)
您对JavaScript如何与网页进行交互存在误解。您的PHP使用echo
在将值发送到客户端之前将值写入页面。
调用JavaScript函数并返回一个字符串,但此字符串永远不会写入页面。
您可以修复JavaScript以操纵页面DOM,但这是不必要的。在执行php时,它知道状态并可以使用span
方法轻松地将echo
标记写入页面。
您根本不需要JavaScript。
答案 1 :(得分:0)
您将字符串返回给函数的调用者,而不是将其写入td的innerHTML。
实际上,您可以通过设置td的样式轻松地使用CSS。但是如果你想使用JavaScript,你需要操纵td的DOM innerHTML。例如:
<td class="Success"><td>
并且,将onload
属性添加到正文中。
<body onload="buildIcons()">
然后JavaScript可以这样写。
function buildIcons() {
var tds = document.getElementsByClassName('Success');
for (var i = tds.length - 1; i >= 0; --i) {
var td = tds[i];
td.innerHTML = "echo the img here";
}
}
使用CSS可以更轻松地完成。
.Success {
background: 'path to bg image';
}