Javascript 在使用PHP生成的表上设置style属性无效
我有几个表通过PHP循环传递到我的页面。在每个PHP循环的末尾,都会运行一个if语句(该语句的计算结果为true),如下所示:Javascript 在使用PHP生成的表上设置style属性无效,javascript,php,html,css,styles,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>"; } 我不知道这为什么不起作用。我可以说
if ($ssstatus[0] == 'F'){
echo "<script>";
//echo "alert('We are in this loop');";
echo "flagfinished(".$gameID.");";
echo "</script>";
}
我不知道这为什么不起作用。我可以说表上的my id属性设置正确,并且与变量myid匹配。我甚至尝试过只输入一个id属性的文本而不是myid,但仍然没有成功。我还手动将“border style”属性添加到我的css中,效果很好。也许我完全走错了方向。或者我忽略了一些显而易见的事情。我已经做了好几个小时了!谢谢你的任何想法或帮助 您试图定义的
边框样式
不是元素属性。该属性将是style
。而border style
将是style属性的一个值
testel.style.borderStyle = "solid";
因此,在你的思路中:
var testel = document.getElementById(myid);
testel.setAttribute("style", "border-style: solid");
但是,Javascript DOM已经为您处理了样式属性,因此您可以:
var testel = document.getElementById(myid);
testel.style.bordeStyle = "solid";
接下来你为什么要用javascript调用flagFinished?你也可以用php做同样的事情。在将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
}
?>
$gameID
中有哪些值,您是否检查了JS代码中的myid
中有哪些值?你确定你的文档中有该ID的元素吗?是的,谢谢。这里有我可以使用的可用属性的参考吗?例如,我如何才能找到borderStyle所做的和borderStyle所做的一样?当然。您需要使用纯JS将样式对象用于这些CSS更改。我相信这是一个很好的解决方案。我认为我所做的有点过分了。我需要一些客户端处理,因此需要调用JavaScript函数。我不希望所有这些都在服务器上执行。不过,谢谢你的想法!嗯,我见过许多针对同一类问题的不同实现。这可能是实现它的简单方法之一。当然,您需要进行大量服务器端计算。但另一方面,您将更快地加载您的页面,客户端将获得更好、更流畅的体验:)只需注意:P
<?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
}
?>