在用PHP构建的表上设置样式属性不起作用

时间:2014-09-09 19:53:52

标签: javascript php html css styles

我有几个表通过PHP循环传递到我的页面。在每个PHP循环结束时,运行if语句(评估为true),如下所示:

if ($ssstatus[0] == 'F'){

    echo "<script>";
    //echo "alert('We are in this loop');";
    echo "flagfinished(".$gameID.");";
    echo "</script>";

}

我的旗帜功能是:

function flagfinished(tableid){
//alert("Made it to the function!");
var myid = "table"+tableid;
//alert(myid);

var testel = document.getElementById(myid);
testel.setAttribute("border-style","solid");
};

我不确定为什么这不起作用。我可以说我在表上的id属性已正确设置并匹配变量myid。我甚至试过只输入一个id属性的文本而不是myid,但仍然没有运气。我还手动添加了&#34; border-style&#34;属于我的CSS,它的工作原理。也许我完全以错误的方式解决这个问题。或许我忽略了一些显而易见的事情。我已经工作了好几个小时了!感谢您的任何想法或帮助!

3 个答案:

答案 0 :(得分:0)

testel.style.borderStyle = "solid";

答案 1 :(得分:0)

您尝试定义的border-style不是元素属性。该属性为styleborder-style将是style属性的值。

所以,在你的思路中:

var testel = document.getElementById(myid);
testel.setAttribute("style", "border-style: solid");

但是,Javascript DOM已经为你处理了style属性,所以你可以去:

var testel = document.getElementById(myid);
testel.style.bordeStyle = "solid";

关注MDN HtmlElement.style docs

答案 2 :(得分:0)

为什么你试图用javascript调用flagFinished?你也可以用php做同样的事情。在将css类发送到浏览器之前添加一个css类(回显/打印出来)然后让css做它的魔术?那么你就不必将所有这些额外的标签发送到客户端,这使得页面加载速度更快,并且是一个更好的解决方案。

你可以做点什么:

<?php
$tables = [
    ['data'   => [
        ['id' => 1, 'content' => 'sample content'],
        ['id' => 2, 'content' => 'sample content jabadabaduuu...'],
        ['id' => 3, 'content' => 'test 1123123123'],
        ['id' => 4, 'content' => 'sample content']
    ],
     'status' => 'F'
    ],
    ['data'   => [
        ['id' => 1, 'content' => 'sample content'],
        ['id' => 2, 'content' => 'sample content jabadabaduuu...'],
        ['id' => 3, 'content' => 'test 1123123123'],
        ['id' => 4, 'content' => 'sample content']
    ],
     'status' => 'S'
    ],
    ['data'   => [
        ['id' => 1, 'content' => 'sample content'],
        ['id' => 2, 'content' => 'sample content jabadabaduuu...'],
        ['id' => 3, 'content' => 'test 1123123123'],
        ['id' => 4, 'content' => 'sample content']
    ],
     'status' => 'F'
    ]
];


foreach ($tables as $table) {
    ?>
    <table id="<?= myUniqueTableIdGeneratorFunction() ?>"
           class="<?= ($table['status']) == 'F' ? 'class-with-border' : null ?>" ><?php
    foreach ($table['data'] as $row) {
        ?>
        <tr>
            <td><?= $row['id'] ?></td>
            <td><?= $row['content'] ?></td>
        </tr>
    <?php
    }
    ?></table><?php
}
?>

我没有对此进行测试,只是快速地从头顶写下了这个。