Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Не работает getElementById() (https://javascript.ru/forum/dom-window/62150-ne-rabotaet-getelementbyid.html)

AgRuN 26.03.2016 16:15

Не работает getElementById()
 
Что здесь не работает, не могу понять!

<html>
<head>
<meta charset="UTF-8">
<title>Форма</title>
<script>
var email=document.getElementById("email").value;
function blur() {
if (email=="") {
email="Email";
}
}
function focus() {
if(email=="Email") {
email="";
}
}
document.getElementById("email").onblur=blur();
document.getElementById("email").onfocus=focus();
</script>
</head>
<body>
<form>
<input type="text" value="Email" id="email">
<input type="text" value="Имя" id="name">
</form>
</body>
</html>

destus 26.03.2016 16:23

https://learn.javascript.ru/onload-ondomcontentloaded

Strongman 26.03.2016 17:24

<input type="text" value="Email" id="email">
<input type="text" value="Имя" id="name">
- вот это нужно написать до скрипта.
email=""; - по-моему так писать нельзя, нужно писать:
email.value="";

Boortcore 30.03.2016 15:12

В коде вы на событие навесили не функцию, а её вызов. Пишите название функции без скобок.
И скрипт нужно разместить в конце страницы, чтобы всё работало. Или завернуть весь этот код в window.onload = function(){ ... }, если Вам принципиально размещение скрипта в head страницы.

Dilettante_Pro 30.03.2016 15:46

Цитата:

Сообщение от Boortcore (Сообщение 412441)
В коде вы на событие навесили не функцию, а её вызов. Пишите название функции без скобок.
И скрипт нужно разместить в конце страницы, чтобы всё работало. Или завернуть весь этот код в window.onload = function(){ ... }, если Вам принципиально размещение скрипта в head страницы.

AgRuN,
Даже если выполнить все эти условия, код толком работать не будет.
1. Переменная email получает значение из input email один-единственный раз - при ее объявлении в начале кода.
Если вы хотите, чтобы она обновлялась, надо вставлять ее внутрь функций.
2. Функция сработала, переменная email поменяла значение, и что?
В инпутах что было, то и останется.

PS: и вообще, смысл этих манипуляций не очень понятен

Boortcore 31.03.2016 20:10

Ну да. Я просто не заметил, что в переменную записывается значение свойства value импута email, хотя нужно было бы добавить в него сам объект импута, а в функциях blur и focus проводить манипуляции уже с его свойством value.
<html>
<head>
    <meta charset="UTF-8">
    <title>Форма</title>
    <script>
        window.onload = function() {
            var email=document.getElementById("email");
            function blur() {
                if (email.value=="") {
                    email.value="Email";
                }
            }
            function focus() {
                if(email.value=="Email") {
                    email.value="";
                }
            }
            document.getElementById("email").onblur=blur;
            document.getElementById("email").onfocus=focus;
        }
    </script>
</head>
<body>
<form>
    <input type="text" value="Email" id="email">
    <input type="text" value="Имя" id="name">
    <input type="button" value="go" onclick="alert(email.value)">
</form>
</body>
</html>


Часовой пояс GMT +3, время: 11:57.