2016-12-31 93 views
0

我在PHP中的JavaScript的一个问题。我想使用Javascript函数来改变CCS属性约显示仅用于那些DIV包含某些文本是在PHP变量其从塔中取出在MySQL表元素。我不知道它实际上是可以这样,但这里的代码:使用JavaScript来改变元素的风格在PHP

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。如果是的话,它会回答我的问题。

+0

你能在数据库结构添加到您的问题吗? –

+0

请提供一个[mcve]和更好的解释什么*“取决于结果”*意味着什么被隐藏 – charlietfl

回答

0

是的,这是可能的,但没有必要使用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,但它是一个例子。

+0

好吧,我不需要使用表格,我需要改变包含该列的elemenets的CSS 。 – chiro

+0

我觉得我写得不好。我有7个具有相同类“tovar”的div元素。我试图在JavaScript中做的是挑选类“tovar”的所有元素,并且如果它们包含列,则在循环中逐个测试它们。如果他们这样做,改变div的style.display为“阻止”,否则什么都不做。 – chiro

+0

在这里有一些我不明白的地方。你如何获得MySQL结果中的HTML元素?你在MySQL表中存储了一大块HTML吗? HTML创建的地方在哪里? – gibberish