简单的Javascript if语句问题

时间:2011-01-25 08:30:07

标签: javascript syntax weblogic

我确信这个解决方案非常明显,但我花了一个小时的时间,所以非常感谢任何帮助!

以下javascript旨在使div可见,如果变量loggedin =“true”则另一个div不可见:

/* Javascript */

function showArticle()
{
document.getElementById('full').style.display = 'block';
document.getElementById('summary').style.display = 'none';
}
var loggedin="true";
var owned="true";
if (loggedin="true")
{
document.write("Logged In");
}
if (owned="true")
{
    showArticle();
}

<!-- HTML -->
<div id="summary">Lorem ipsum dolor sit amet, consectetur adipisicing elit.</div>

<div id="full" style="display:none;">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur.
<div>

我是否认为问题在于我调用了showArticle函数?

7 个答案:

答案 0 :(得分:8)

=更改为==,请查看此article(javascript运算符)

if (loggedin=="true")
.....
if (owned=="true")

答案 1 :(得分:3)

它应该是if (a == b)而不是if (a = b):后者会将b的值分配给变量a(然后使用b的值来确定是否运行if条件,在你的例子中总是如此)。

答案 2 :(得分:2)

function showArticle()
{
    document.getElementById('full').style.display = 'block';
    document.getElementById('summary').style.display = 'none';
}
var loggedin = true;
var owned = true;
if (loggedin == true)
{
    alert("Logged In");
}
if (owned == true)
{
    showArticle();
}

答案 3 :(得分:2)

我将您的代码复制到一个文本文件中并尝试了 - 它遇到了问题。

我把javascript放在html上面的脚本标签中。

<html>
<body>

<script>
function showArticle()
{
document.getElementById('full').style.display = 'block';
document.getElementById('summary').style.display = 'none';
}
var loggedin="true";
var owned="true";
if (loggedin="true")
{
document.write("Logged In");
}
if (owned="true")
{
    showArticle();
}

</script>

<!-- HTML -->
<div id="summary">Lorem ipsum dolor sit amet, consectetur adipisicing elit.</div>

<div id="full" style="display:none;">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur.
<div>


</body>
</html>

这失败了,因为当javascript运行时,div标签尚未添加到DOM中,因此getElementById返回null。我通过在Firebug / Firefox中调试javascript找到了这个。

如果我将javascript移动到html之后,它会起作用 - 因为DOM随后会加载这些项目。

<html>
<body>
<!-- HTML -->
<div id="summary">Lorem ipsum dolor sit amet, consectetur adipisicing elit.</div>

<div id="full" style="display:none;">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur.
<div>

<script>
function showArticle()
{
document.getElementById('full').style.display = 'block';
document.getElementById('summary').style.display = 'none';
}
var loggedin="true";
var owned="true";
if (loggedin="true")
{
document.write("Logged In");
}
if (owned="true")
{
    showArticle();
}

</script>
</body>
</html>

答案 4 :(得分:2)

为我工作( UPD ):

<html>
<head>

<script type="text/javascript">
window.onload = function() {
    function showArticle()
    {
        document.getElementById('full').style.display = 'block';
        document.getElementById('summary').style.display = 'none';
    }

    var loggedin = true, owned = true;

    if (loggedin == true)
    {
        document.write("Logged In");
    }

    if (owned == true)
    {
        showArticle();
    }
}
</script>
</head>

<body>
<!-- HTML -->
<div id="summary">moo</div>
<div id="full" style="display:none;">foo</div>

</body>
</html>

那么,出了什么问题?

  • 未闭合<div>(第二个)
  • 拨款而不是比较(=代替==
  • 字符串而不是布尔值("true" vs true
  • 脚本没有类型(你应该总是设置它。它只是一个标准:<script type="text/javascript">
  • 脚本应位于<head>标记内(它也是标准)
  • 您尝试访问尚未加载的对象时

答案 5 :(得分:0)

而不是loggedin =“true”写为loggedin ==“true”

答案 6 :(得分:0)

它真的是用javascript隐藏内容的新手。但是如果你想要这样做,我会建议删除内容。

使用

document.getElementById('summary').innerHTML = '';

而不是

document.getElementById('summary').style.display = 'none';