У меня есть вход:

<input type="text" class="input" name="email" id="email" value="" disabled>

И JavaScript:

$email = "stackemail@emails.com";

function setEmail(email) {
        document.getElementById("email").value = email;
    }

    window.onload = setEmail($email);

Теперь он показывает сообщение в поле ввода, как я хочу: он показывает stackemail@emails.com

Но он не устанавливает значение при проверке элемента: значение = ""

Даже когда я изменяю значение внутри элемента inspect, он остается «stackemail@emails.com»

Теперь мне нужно, чтобы значение было таким же, как то, что оно показывает. Почему это не так?

3
Jelle 11 Янв 2017 в 17:57

3 ответа

Лучший ответ

Вы обновляете свойство value элемента DOM, а не его атрибут значения. Чтобы отразить в разметке, используйте setAttribute(), который использует для обновления атрибута.

function setEmail(email) {
   document.getElementById("email").setAttribute('value', email);
}
$email = "stackemail@emails.com";

function setEmail(email) {
  document.getElementById("email").setAttribute("value", email);
  document.getElementById("email2").value = email;
}

window.onload = setEmail($email);
<input type="text" class="input" name="email" id="email" value="" disabled>

<input type="text" class="input" name="email" id="email2" value="" disabled>
5
Pranav C Balan 11 Янв 2017 в 15:07

Работает в любом случае ... инспектор не показывает изменения, если вы хотите попробовать использовать функцию setAttribute, но работает нормально

    $email = "stackemail@emails.com";

    function setEmail(email) {
          document.getElementById("email").value = email;
    //if u want change attr.. try works too
      //document.getElementById("email").setAttribute('value',email);
        }
    function getEmail(){
      return document.getElementById("email").value;
    }

    document.addEventListener("DOMContentLoaded", function(event) { 
      setEmail($email);
      console.log('value: ' + getEmail());
    });
<input type="text" class="input" name="email" id="email" value="" disabled />
1
Diego Peinador 11 Янв 2017 в 15:15
 window.onload = setEmail($email);

SetEmail выполнит сейчас . Ты хочешь

window.onload = ()=>setEmail($email);

Или для старого браузера

window.onload =function(){
   setEmail($email);
 };
0
Jonas Wilms 11 Янв 2017 в 15:00