在onclick事件上运行PHP代码

时间:2016-04-12 16:11:37

标签: javascript php css

我的函数生成一个表,其中包含来自mysqli查询的$ data,请求子论坛名称。

function forum_links($data){
//print_r($data);
echo "<div id = 'sub_forums'>
        <table>";
foreach($data as $name){
echo "
        <tr>
            <td id='sub_forum_image'>
            <img src='images/favicon_text.ico' alt='MWGA'>
            </td>
            <td id='sub_forum_td'>
            <a href='forum?forum={$name[0]}'>{$name[0]}</a>
            </td>
        </tr>";
}
echo "</table></div>";
}

单击文本时,我会检查是否设置了varibale论坛,如果设置了我想隐藏div'sub_forums'

<?php 
    if (isset($_GET['forum'])) {
    echo "is set";
    ?> <script>sub_forum_hide();</script> <?php
    }
?>

我得到的错误

  

未捕获的TypeError:无法读取null的属性'style'。

我认为这与我的文档排序有关,因为我在其他部分使用完全相同的隐藏style.display = "none"

function sub_forum_hide(){
    document.getElementById("sub_forum").style.display = "none";
}

我已经尝试将sub_forum_hide()移动到文档的底部,但我仍然遇到同样的错误。仅供参考,当我单击文本时,“已设置”回声确实有效。

3 个答案:

答案 0 :(得分:1)

从你的代码看起来..你没有任何带ID的元素&#34; sub_forum&#34;这就是为什么它是null。相反,你有一个div = ID =&#34; sub_forums&#34; ...所以你的功能实际应该是

f = open('testapi.html','w')

message = """
<html>

<head>
<title></title>
<link rel="stylesheet" href="Bootstrap/bootstrap-3.3.5-dist/css/bootstrap.css" type="text/css"/>
<script>

</script>
</head>

<body>
<div class="row">
    <div class="col-md-2">
    </div>
    <div class="col-md-3">
        <p>Search for best deals</p>
        <form name="deals" action="">
        <table>
        <thead></thead>
        <tbody>
            <tr> <th>Title </th> <th><input type="text" id="Title" value=""><br></th> </tr>
            <tr> <th>Lowest price</th> <th><input type="text" id="LowerPrice" value=""><br></th> </tr>
            <tr> <th>Highest price</th> <th><input type="text" id="UpperPrice" value=""><br></th> </tr>
            <tr> <th>Sale only</th> <th><input type="checkbox" id="OnSale" value=""></br></th> </tr>
            </tbody>
            </table>
            <p>Sort by:</p>
            <input type="radio" name="sort" id="DealRating" value="a">Deal rating<br>
            <input type="radio" name="sort" id="Title" value="b">Title<br>
            <input type="radio" name="sort" id="Price" value="c">Price<br>
            <input type="radio" name="sort" id="Release" value="d">Release<br>

        <input type="button" name="Sumbit" value="Submit" onClick="">
        </form>
        <p> Note: all fields are optional, fill only what you are intrested in.</p>

    </div>
    <div class="col-md-2">
        <p> OR </p>
    </div>
    <div class="col-md-3">
        <p>Search for your favourite games<p>
        <form name="games" action="">
        <table>
        <thead></thead>
        <tbody>
        <tr><th>Title</th> <th><input type="text" id="GameTitle" value=""></br></th></tr>
        </tbody>
        </table>
        <input type="button" name="Sumbit" value="Submit" onClick="">
        </form>
        <p> Note: all fields are optional, fill only what you are intrested in.</p>
    </div>
    <div class="col-md-2">
    </div>
</div>
</body>
</html>
"""

f.write(message)
f.close()

可能是您的错字。

下次尝试先了解错误......可以省去很多麻烦并帮助调试。

答案 1 :(得分:1)

看起来您的标题与您的问题不相符。

要解决您实际描述的问题,您需要像其他人指出的那样更正您的div的ID。

如果你想从javascript执行一些php,你需要使用Ajax

答案 2 :(得分:0)

将sub_forums更改为sub_forum。

function forum_links($data){
//print_r($data);
echo "<div id = 'sub_forum'>
        <table>";
foreach($data as $name){
echo "
        <tr>
            <td id='sub_forum_image'>
            <img src='images/favicon_text.ico' alt='MWGA'>
            </td>
            <td id='sub_forum_td'>
            <a href='forum?forum={$name[0]}'>{$name[0]}</a>
            </td>
        </tr>";
}
echo "</table></div>";
}