2016-12-31 88 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