Отключенный JavaScript
Проблема такая! Есть форма авторизаций, котороя выпадает при нажатий на ссылку,
<script>
function showLoginWindow()
{
document.getElementById("login").style.display="block";
var hs=document.getElementById("hideshow");
hs.innerHTML="Hide";
hs.onclick=hideLoginWindow;
}
function hideLoginWindow()
{
document.getElementById("login").style.display="none";
var hs=document.getElementById("hideshow");
hs.innerHTML="Enter";
hs.onclick=showLoginWindow;
hs.style.display="block";
}
</script>
HTML: <body onload="hideLoginWindow()"> <a href="Files/registration.html"> Register</a> <div> <a style="display: none" id="hideshow" href="#" onclick="showLoginWindow()">Enter</a> <div id="login"> <FORM action="" method="POST"> Login: <INPUT type="text" name="lgn"><br> Password: <INPUT type="password" name="pswd"> <br> <INPUT type="submit" name="enter" value="Enter"> </FORM> </div> </div> </body> Мне нужно чтобы если отключен скрипт в браузере, то форма выводилась в окне, проблема- все это делается но при каждом обновлении страницы эта форма видна из-за onLoad() КАК БЫТЬ???? Предложите свой вариант по возможности!!!!!!!!За ранее спасибо!!!!!! |
сделайте ссылку чтобы она вела на страницу с авторизацией, а при window.onload найдите ее и поменяйте href на "javascript: void 0", и прикрутите обработчик, если js выключен, то ссылка будет просто вести на форму с авторизацией.
|
Зачем менять href? <a onclick="...; return false"> не катит?
|
Ну, или если мы за разделение содержания и скриптов, то так:
<a id="123" href="http://www.yandex.ru/">Текст</a>
<script>
a=document.getElementById("123");
a.onclick=function() {
/* ваш код... */
return false;
};
</script>
|
trikadin,
Вы правы, но лучше уж тогда назначить обработчик на документ, смотреть на чем был клик и если на ссылке то принимать соответствующие меры, я думаю так лучше чем вешать обработчик на каждую ссылку
document.onclick = function(e){
var trg = function(event){
return event.target || event.srcElement;
}(e || window.event)
if(trg.tagName = "A"){
doSomething(trg.href);
return false;
}
}
|
А как все будет выглядеть в развернутом виде с js, html, css!!! А то я плохо понял!!!!!!!1
|
Цитата:
|
poorking, можно же проще))
<script type="text/javascript">
document.onclick = function(event) {
*!*var target = event ? event.target : window.event.srcElement;*/!*
if(target.nodeName == 'A') {
alert('Oops!');
}
return false;
};
</script>
<a href="#">click</a>
|
monolithed,
trg.tagName = "A" Присваивание поставил нечаянно, прямо тут писал, ошибся. И вопрос, есть ли разница между nodeName и tagName если речь идет об Element (nodeType 1)? Вроде совпадают
<script type = "text/javascript">
window.onload = function(){
var html = document.getElementsByTagName("HTML")[0];
alert(html.tagName +"-"+ html.nodeName);
}
</script>
Цитата:
|
Цитата:
<script type = "text/javascript"> var doc = document; alert(doc.tagName +"-"+ doc.nodeName); </script> Цитата:
nodeName имеет все тоже самое, что tagName, плюс некоторые дополнения... Attribute (attr name) | Text (#text ) | Comments (#comment ) | Document (#document) | DocumentFragment (#document-fragment) |
monolithed,
Это я знаю, я говорил Цитата:
|
Цитата:
|
trikadin,
Если ссылка одна то несомненно. А если новостная лента автоподгружающаяся аля фкантакте и их 100? вы каждой напишете свойство onclick? PS тут где то есть похожая тема и я запутался, здесь да, ссылка одна. Виноват, каюс |
Цитата:
Цитата:
Цитата:
|
Вы совсем запутали меня! Ссылка единственная, и сайт у меня с не большим контентом!!!!А фишка про переход на другую страницу прнравилась.Но все же объясните толком как должно все быть!!!
ВОТ МОЙ СКРИПТ:
<script>
02 function showLoginWindow()
03 {
04 document.getElementById("login").style.display="block";
05 var hs=document.getElementById("hideshow");
06 hs.innerHTML="Hide";
07 hs.onclick=hideLoginWindow;
08 }
09 function hideLoginWindow()
10 {
11 document.getElementById("login").style.display="none";
12 var hs=document.getElementById("hideshow");
13 hs.innerHTML="Enter";
14 hs.onclick=showLoginWindow;
15 hs.style.display="block";
16 }
17 </script>
HTML: HTML: 01 <body onload="hideLoginWindow()"> 02 <a href="Files/registration.html"> Register</a> 03 <div> 04 05 <a style="display: none" id="hideshow" href="#" onclick="showLoginWindow()">Enter</a> 06 07 <div id="login"> 08 09 <FORM action="" method="POST"> 10 Login: <INPUT type="text" name="lgn"><br> 11 Password: <INPUT type="password" name="pswd"> <br> 12 <INPUT type="submit" name="enter" value="Enter"> 13 </FORM> 14 </div> 15 16 </div> 17 </body> Напишите полностью страницу пж-та !!! |
Вообще, просить написать страницу - наглость. :-E Можно спрашивать. Не понимаешь - уточняй. Не понимаешь совсем - учи матчасть. И не надейся, что в следующий раз тебе ещё раз так помогут.
<html>
<head>
<style>
#login {
display: none;
}
#login.show {
display: block;
}
</style>
</head>
<body>
<a href="Files/registration.html"> Register</a>
<div>
<a style="display: none" id="hideshow" href="login.html">Enter</a>
<!-- login.html - это страница, куда перейдёт пользователь с отключённым javascript -->
<div id="login">
<FORM action="" method="POST">
Login: <INPUT type="text" name="lgn"><br>
Password: <INPUT type="password" name="pswd"> <br>
<INPUT type="submit" name="enter" value="Enter">
</FORM>
</div>
</div>
<script src="hideshow_login.js"></script>
</body>
</html>
Содержимое файла hideshow_login.js:
// скрипт должен быть в конце, а не в начале, тогда он будет выполнен после того, как загрузится DOM
function showLoginWindow()
{
document.getElementById("login").className+=" show"; // менять стили через javascript - плохо. Лучше определить отдельный класс
var hs=document.getElementById("hideshow");
hs.innerHTML="Hide";
hs.onclick= function(){hideLoginWindow(); return false};
};
function hideLoginWindow()
{
document.getElementById("login").className.replace(" show", ""); // удаляем класс
var hs=document.getElementById("hideshow");
hs.innerHTML="Enter";
hs.onclick= function() {showLoginWindow(); return false} // меняем обработчик на ссылке
hs.style.display="block"; // не очень понял, зачем эта строка, поэтому не стал трогать...
};
document.getElementById("hideshow").onclick= function() {showLoginWindow(); return false}; // вешаем обработчик на ссылку, return false нужен, чтобы не произошло перехода на другую страницу
|
Большое спасибо за разяснение
|
| Часовой пояс GMT +3, время: 00:22. |