我试图根据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>";
}
任何帮助都会很棒。
答案 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 之后,我会回来找一个解决方案:
将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);
按照之前的说法显示变量内容,就在选择标记被定位之后
<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。