Я только что сделал контрольный пример для JS Bin , который жалуется:
Exception thrown: $$("#hello").hide is not a function
Caused by line (23/21): $$('#hello').hide();
(используется последняя версия Prototype)
При использовании:
$('hello').style.display = "none";
работает правильно, см. пример .
РЕДАКТИРОВАТЬ: Я настроил пример в JS Bin , чтобы условно добавить имя класса в body
до того, как будет достигнут соответствующий элемент. Использование
.registered-user #hello { display: none; }
Элемент вообще не отображается. Это не самое аккуратное решение, поскольку вы должны добавить script
в середине документа, но оно работает. Если кто-то знает лучшее решение, скажите, пожалуйста.
<!DOCTYPE html>
<html>
<head>
<script class="jsbin" src="http://ajax.googleapis.com/ajax/libs/prototype/1/prototype.js"></script>
<meta charset=utf-8 />
<title>JS Bin</title>
<style>
.registered-user #hello { display: none; }
</style>
</head>
<body>
<script>
if (document.location.href.indexOf('registered')>=0)
$$('body')[0].addClassName('registered-user');
</script>
<p id="hello">Hello World</p>
</body>
</html>