如何从td表中的js函数获取字符串值?

时间:2017-06-13 19:09:53

标签: javascript php function frameworks html-table

我正在使用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>

2 个答案:

答案 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';
}