我正在使用JavaScript
开展隐藏节目功能但是在onclick功能的控制台上出现错误
我不明白为什么会发生这种错误。
JAVASCRIPT CODE
<script type="text/javascript">
function showtabs(id,id1) {
alert(id);
alert(id1);
var e = document.getElementById(id);
var flag = document.getElementById(id1);
if(e.style.display == 'block')
{
e.style.display = 'none';
flag.innerHTML = '+';
}
else
{
e.style.display = 'block';
flag.innerHTML = '-';
}
}
PHP代码
<?php
$output.='<div class="span6">
<div class="header" onclick="showtabs(my_section,icon);">
<h1>My Section <span class="iconc" id="icon">+</span></h1>
</div></div>';
$output.='<div id="my_section" style="display:none;">This is my section</div>';
echo $output;
?>
错误记录
TypeError: e is null
if(e.style.display == 'block')
答案 0 :(得分:1)
试试这个:
<html>
<?php
$output='';
$output.='<div class="span6">
<div class="header" onclick="showtabs(\'my_section\',\'icon\');">
<h1>My Section <span class="iconc" id="icon">+</span></h1>
</div></div>';
$output.='<div id="my_section" style="display:none;">This is my section</div>';
?>
<head>
<title>Sample Eula Agreement</title>
<script type="text/javascript">
function showtabs(id,id1) {
alert(id);
alert(id1);
var e = document.getElementById(id);
var flag = document.getElementById(id1);
alert(e.style.display);
if(e.style.display == 'block')
{
e.style.display = 'none';
flag.innerHTML = '+';
}
else
{
e.style.display = 'block';
flag.innerHTML = '-';
}
}
</script>
<style>
</style>
</head>
<body>
<?php
echo $output;
?>
</body>
</html>
您正在函数中传递字符串,但由于缺少引号,它正在将它们作为HTML元素读取。这就是为什么,e即将出现。
答案 1 :(得分:0)
看起来变量e为null。换句话说,dom中没有带有传递给函数的id的元素。
答案 2 :(得分:0)
你忘记了引号。试试这个: 的onclick =&#34; showtabs(&#39; MY_SECTION&#39;&#39;图标&#39;);&#34;
答案 3 :(得分:0)
我认为你没有完全选择id和id1
var e = document.getElementById('id'); //check here
var flag = document.getElementById('id1');
答案 4 :(得分:0)
只需更改$output
变量onclick=showtabs("my_section","icon")
的php代码,因为你传递了没有双quats的id,所以它的反应就像对象