在php中使用mysql枚举和javascript显示和隐藏元素?

时间:2014-05-24 11:17:57

标签: javascript php mysql

我试图根据mysql数据库中ENUM的值显示和隐藏元素。

我正在使用javascript和PHP,但似乎PHP中的javascript没有或不能选择给定的元素,因为元素总是在显示!

这是我的PHP代码:

if ($sizeSelect != '1') {

echo '<script type="text/javascript">';
echo 'document.getElementById("sizeSelect").style.display = "block"';
echo '</script>';
}else{
echo '<script type="text/javascript">';
echo 'document.getElementById("sizeSelect").style.display = "none"';
echo '</script>';
}

这是我的HTML元素:

<select id="sizeSelect" name="sizeSelect">
            <option>Small</option>
            <option>Large</option>
            </select>

我有什么遗失的吗?

任何帮助将不胜感激。

由于

P.S。我确保我已连接到mysql数据库并正确获取ENUM值,因此mysql连接不是问题。

好吧,我刚刚在我的html文件中进行了测试,并在页面顶部放置了以下代码但仍然无法正常工作,但是当我在页面底部放置相同的代码时,它确实有效并将元素的显示更改为无:

 <script language='javascript' type='text/javascript'>
document.getElementById('sizeSelect').style.display = 'none';
</script>

所以,我确实在我的PHP文件中使用文档就绪功能尝试了这段代码,但仍然无法从php文件中运行!

if ($sizeSelect = 1) {

echo "<script language='javascript' type='text/javascript'>";
echo
"$(document).ready(function(){ document.getElementById('sizeSelect').style.display = 'block';});";
echo "</script>";
}else{
echo "<script language='javascript' type='text/javascript'>";
echo "document.getElementById('sizeSelect').style.display = 'none';";
echo "</script>";
} 

任何帮助都会很棒。

3 个答案:

答案 0 :(得分:1)

尝试在 SELECT 标记之后或在文件末尾放置生成 javascript php 代码,因为 javascript 找不到DOM元素“#sizeSelect”,我做了测试,它对我有用。像这样:

<select id="sizeSelect" name="sizeSelect">
    <option>Small</option>
    <option>Large</option>
</select>

<?php 

    $sizeSelect = // retrieve sizeSelect value from your database;
    if ($sizeSelect != '1') {

        echo '<script type="text/javascript">';
        echo 'document.getElementById("sizeSelect").style.display = "block"';
        echo '</script>';
    }else{
        echo '<script type="text/javascript">';
        echo 'document.getElementById("sizeSelect").style.display = "none"';
        echo '</script>';
    }
?>

在您指定使用 Smarty 之后,我会回来找一个解决方案:

  1. 将php文件中生成的 js 内容连接到字符串变量上,而不是使用 echo ,并使用 Smarty 指定其值assign()功能

     $jsContent= '';
     if ($sizeSelect != '1') {
         $jsContent.= '<script type="text/javascript">';
         $jsContent.=  'document.getElementById("sizeSelect").style.display = "block"';
         $jsContent.=  '</script>';
     }
     else{
         $jsContent.=  '<script type="text/javascript">';
         $jsContent.=  'document.getElementById("sizeSelect").style.display = "none"';
         $jsContent.=  '</script>';
     }
     $smarty->assign('js', $jsContent);
    
  2. 按照之前的说法显示变量内容,就在选择标记被定位之后

     <select id="sizeSelect" name="sizeSelect">
         <option>Small</option>
         <option>Large</option>
     </select>
     {$js}
    

答案 1 :(得分:0)

我认为你应该有一个div,其中select将起作用,使用Div进行隐藏和显示,见下文

HTML代码:

<div id ="sizeSelect">
<select id="select_id" name="select_id">
            <option>Small</option>
            <option>Large</option>
            </select>

</div>

和php

if ($sizeSelect) {
 echo '<script type="text/javascript">';
 echo 'document.getElementById("sizeSelect").style.display = "none"';
 echo '</script>';
}else{
 echo '<script type="text/javascript">';
 echo 'document.getElementById("sizeSelect").style.display = "block"';
 echo '</script>';
}

答案 2 :(得分:0)

这对我有用:

if ($sizeSelect != 1) {
echo '<script language="javascript" type="text/javascript">';
echo
'$( document ).ready(function() { $( "#sizeSelect" ).hide();});';
echo "</script>";
}else{
echo "<script language='javascript' type='text/javascript'>";
echo
"$( document ).ready(function() { $( '#sizeSelect' ).show();});";
echo "</script>";

顺便说一句,这是jQuery。