我对 PHP 中的 javascript 有疑问。我想使用 Javascript 函数将 ccs 属性 display 更改为 block,仅针对那些包含 php 中某些文本的 div 元素从 MySQL 表 中的列中获取的变量。我不知道这种方式是否真的可行,但这是代码:
PHP:
$sql="SELECT * FROM Filter1";
$result=$conn->query($sql);
while($row = $result->fetch_assoc()) {
$meno=$row['meno'];
echo '<script type="text/javascript"> filterTovar() </script>';
JavaScript:
function filterTovar()
{
var meno='<?php echo $meno; ?>';
var produkt=document.getElementsByClassName("tovar");
produkt.style.display="none";
for(var i=0;i<produkt.length;i++)
{
produkt[i].style.display="none";
}
for(var i=0;i<produkt.length;i++)
{
if(produkt[i].innerHTML==meno)
{
produkt[i].style.display="block";
}
}
}
我正在尝试制作某种过滤器,根据表格的结果只显示某些 div,但上面的代码不起作用,我不确定是否可以通过这种方式工作。
我正在从中获取数据的 MySQL 表:
id meno znacka cena op format
425 H81M-S2V GIGABYTE 46.03 DDR3 mATX
426 H110N GIGABYTE 83.05 DDR4 mITX
编辑: 更好地解释我的问题:用户使用复选框来过滤我网站上的产品,在数据库 php 中创建包含相应产品的表。我上面的代码应该采用该表并使用列“meno”,其中是产品名称,以仅显示那些包含字符串“meno”的 div。
EDIT2: 我想问一下是否可以通过 DOMDocument() 更改或使用元素 css。如果是,它将回答我的问题。
最佳答案
是的,这是可能的,但不需要使用 javascript/jQuery - 只需使用 HTML 和 CSS。
基本上,您有数据库结果集并使用 while 循环遍历它,对吗?
我猜你是在那个 while 循环中构建 HTML。
在循环的每次迭代中,测试您的 MySQL 列值并向所需的 HTML 元素添加一个类。
这是一个例子:
$out = '<table><tbody>';
while($row = $result->fetch_assoc()) {
$theclass = ($row['something']=='hideme') ? ' hiddenTD' : '';
$out .= '<tr><td class="' .$theclass. '">' .$row['something']. '</td></tr>'
}
$out = '</tbody></table>';
echo $out;
当然,您会在文档中定义 CSS,例如:
<style>
.hiddenTD{display:none;}
</style>
这是一个糟糕的例子,因为你不能“隐藏”TD,但这是一个例子。
关于javascript - 使用 Javascript 更改 PHP 中元素的样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41409432/