Простой Javascript, если постановка задачи - PullRequest
0 голосов
/ 25 января 2011

Я уверен, что решение очевидно, но я потратил целый час на то, чтобы разобраться, поэтому буду очень признателен за любую помощь!

Следующий javascript предназначен для того, чтобы сделать div видимым, а другой div - невидимым, если переменная loggedin = "true":

/* 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 ]

8 голосов
/ 25 января 2011

изменить = на ==, посмотрите на эту статью (оператор JavaScript)

if (loggedin=="true")
.....
if (owned=="true")
3 голосов
/ 25 января 2011

Это должно быть if (a == b), а не if (a = b): последний присваивает значение b переменной a (а затем использует значение b, чтобы определить, следует ли выполнить условие if, которое втвой пример всегда так).

2 голосов
/ 25 января 2011

Работал для меня ( 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) * Сценарий 1018 *
  • не имеет типа (выследует всегда устанавливать его. это просто стандарт: <script type="text/javascript">)
  • сценарии должны быть в теге <head> (это также стандарт)
  • вы пытались получить доступобъекты, которые еще не были загружены
2 голосов
/ 25 января 2011

Я скопировал ваш код в текстовый файл и попробовал его - и у него возникла проблема.

Я поместил 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 возвращает ноль.Я нашел это с помощью отладки javascript в Firebug / Firefox.

Если я переместил 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>
2 голосов
/ 25 января 2011
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();
}
0 голосов
/ 25 января 2011

это действительно новичок, чтобы скрыть содержимое с помощью JavaScript. Но если вы все равно хотите это сделать, я бы порекомендовал стереть содержимое.

использование

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

вместо

document.getElementById('summary').style.display = 'none';
0 голосов
/ 25 января 2011

вместо loggedin = "true" напишите как loggedin == "true"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...