在我的PHP文档中,我从myDatabase中提取数据。然后,我继续将数据库中的表中的值赋给变量。我知道这个变量恰好是$ fileLoc1,确实有一个值,因为我把它放在
echo $fileLoc1;
它返回一个值,或者在我的例子中返回一个文件的URL。基本上,这样做是告诉用户文件是否可供下载。我有以下代码来检查这一点。
if ($fileLoc1 === NULL) {
echo "<script>
document.getElementById ('alert-sng-available').style.display
= 'none !important';
</script>";
echo "<script>
document.getElementById ('alert-sng-Navailable').style.display
= 'block !important';
</script>";
}
在上面的代码#alert-sng-available
中,警告会显示绿色可用div
,alert-sng-Navailable
(不可用)会显示红色div
。
当我第一次将它放入我的.php文件时,我没有想到它,因为它有效。 $ fileLoc1 不为空,因此使用div的原始设置,显示绿色,隐藏红色。但是,如果我稍微编辑代码......
if ($fileLoc1 !== NULL) {
echo "<script>
document.getElementById ('alert-sng-available').style.display
= 'none !important';
</script>";
echo "<script>
document.getElementById ('alert-sng-Navailable').style.display
= 'block !important';
</script>";
}
你能猜出会发生什么吗?没有。绝对的,没有任何积极的。以下是显示两次尝试结果的图像。在第二段代码中,绿色div
应该消失,替换为红色div
。 (是的,我使用引导程序,这就是我使用!important 的原因,但它无论是否有效都无法使用)
将if语句从===
更改为!==
后,下一张图片将在HTML中显示该标记
这是在inspect元素中,清除显示php评估了!==等式为true,这是正确的,但现在javascript不起作用。
让我们再试一次,但使用===
等式。有用!没有脚本标记,因此它应该被评估为false。
我在这里不知所措。
是的,div正确标记,没有bootstrap干扰。 因为 ,如果我使用&#34; ctrl + shift + i&#34;更改alert-sng
div的属性它工作正常!此外,是的,我的javascript位于页面底部
答案 0 :(得分:2)
您不应该使用PHP-JS-HTML / CSS管道。实际上,您可以简单地依靠PHP本身来指示页面本身显示/隐藏的内容。
由于您未在代码中提供任何标记,我将使用一个假设的示例。我们假设您要在<p>File available</p>
变量不为空时打印$fileLoc1
,而在<p>File not available</p>
,我们可以这样做:
<?php
if ($fileLoc1 === NULL) {
echo '<p>File available</p>';
} else {
echo '<p>File not available</p>';
}
?>
有关更简洁的示例,您还可以使用ternary operators(?:
),即:
<?php
echo $fileLoc1 === NULL ? '<p>File available</p>' : '<p>File not available</p>';
?>
如果您希望两个标记都存在以便以后可以使用JS操作它们,您甚至可以打印它们,并有条件地指定样式:
<p style="<?php echo $fileLoc1 === NULL ? 'display: none': 'display: block'; ?>">File available</p>
<p style="<?php echo $fileLoc1 === NULL ? 'display: block': 'display: none'; ?>">File not available</p>
如果$fileLoc
为NULL
,您将获得以下标记:
<p style="display: none">File available</p>
<p style="display: block">File not available</p>