按ID获取元素什么都不做

时间:2016-12-30 16:12:31

标签: javascript php css mysqli

在我的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中,警告会显示绿色可用divalert-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 的原因,但它无论是否有效都无法使用)

enter image description here

将if语句从===更改为!==后,下一张图片将在HTML中显示该标记

in inspect element

这是在inspect元素中,清除显示php评估了!==等式为true,这是正确的,但现在javascript不起作用。

让我们再试一次,但使用===等式。有用!没有脚本标记,因此它应该被评估为false。

我在这里不知所措。

是的,div正确标记,没有bootstrap干扰。 因为 ,如果我使用&#34; ctrl + shift + i&#34;更改alert-sng div的属性它工作正常!此外,是的,我的javascript位于页面底部

显示它可以工作的gif

it can work. But it won't

1 个答案:

答案 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>

如果$fileLocNULL,您将获得以下标记:

<p style="display: none">File available</p>
<p style="display: block">File not available</p>