JavaScript无法在joomla中使用php

时间:2014-04-22 17:45:00

标签: javascript php html joomla

这是我的问题。我现在试图从joomla数据库获取所有结果并显示为复选框。然后,如果我的PHP代码没有得到数据库的结果,它应该提示错误消息并隐藏joomla中的特定DIV。但我的代码不起作用,它不会隐藏我想要的DIV元素。

这是我的代码:

<html>
<head>
</head>
<?php

$q = $_GET['q'];


define( '_JEXEC', 1 );
define( 'DS', DIRECTORY_SEPARATOR );
define( 'JPATH_BASE', $_SERVER[ 'DOCUMENT_ROOT' ] );

require_once( JPATH_BASE . DS . 'includes' . DS . 'defines.php' );
require_once( JPATH_BASE . DS . 'includes' . DS . 'framework.php' );
require_once( JPATH_BASE . DS . 'libraries' . DS . 'joomla' . DS . 'factory.php' );
$mainframe =& JFactory::getApplication('site');


$db = JFactory::getDBO();


$sql="SELECT courseid FROM course WHERE campusid = '$q'";


// Set the query for the DB oject to execute
$db->setQuery($sql);// Get the DB object to load the results as a list of objects
$results = $db->loadObjectList();
if($results){
     foreach($results as $result)
     {
        echo "<label class='option block'>";
         echo "<input type='checkbox' id ='courseID' name='courseID' value='$result->courseid' onChange='showBox2(this.value)'><span class='checkbox'></span>";
 echo $result->courseid;
 echo '</label>';
 echo '<br/>';

 } 

}
else{ echo 'Error. No data found in '.$q;
      echo '<script type="text/javascript">';
echo 'function myFunction(){  document.getElementById('hideBox2').style.display =none; };';
echo '</script>';}
?>
<body>
</body>
</html>

我想隐藏的DiV元素:

 <div id="hideBox2" style="display:none;">
                    <div class="spacer-t40 spacer-b30">
                        <div class="tagline"><span> Date Open For Registration & Course Start Date </span></div><!-- .tagline -->
                    </div>

                    <div class="frm-row">
                        <div class="section colm colm6">
                            <label class="field prepend-icon">
                                <input type="text" id="from" name="from" class="gui-input">
                                <label class="link-icon jsn-icon-calendar"></i></label>  
                            </label>
                        </div><!-- end section -->

                        <div class="section colm colm6">
                            <label class="field prepend-icon">
                                <input type="text" id="to" name="to" class="gui-input">
                                <label class="field-icon"><i class="fa fa-calendar"></i></label>  
                            </label>
                        </div><!-- end section -->
                    </div><!-- end .frm-row section -->

                </div>

另外,这是一个php文件。

1 个答案:

答案 0 :(得分:0)

你应该转义javascript部分中的引号字符:

echo 'function myFunction(){  document.getElementById(\'hideBox2\').style.display = \'none\'; };';

或者,甚至可能更好,直接输出javascript:

?> function myFunction(){  document.getElementById('hideBox2').style.display = 'none'; }; <?php

不要忘记将“无”值放入引号中。

但是你的代码看起来很混乱。我找不到你想要隐藏的div输出的位置。您甚至在打开正文之前输出列表。此外,您可以在输出之前检查数据库结果计数,并“决定”是否需要保留div。