значение элемента не может быть установлено - PullRequest
0 голосов
/ 09 апреля 2020

Внутри функции создается элемент ввода HTML. После вызова функции элемент отображается в позиции, я могу набрать его, но не могу получить к нему доступ с помощью своего скрипта.

После исследования я добавил проверку, существует ли элемент, если он все еще существует не могу изменить его значение в скрипте ... Я могу изменить значение в консоли с document.getElementById ("txtSearchBelow"). value = 'access me'

<div id = "searchResults"></div>

document.getElementById("searchResults").innerHTML = '<input id="txtSearchBelow"class="form-control" type="text" placeholder="Search..">'+'<br>';
var inputBelow = document.getElementById("txtSearchBelow");
console.log(inputBelow);
console.log('until here it seems fine.');
var element = document.getElementById("txtSearchBelow");
 //If it isn't "undefined" and it isn't "null", then it exists.
if(typeof(element) != 'undefined' && element != null){
    alert('Element exists!');
// this here doesnt work. why not?
    document.getElementById("txtSearchBelow").value = 'eyyy please access me'; 
} else{
    alert('Element does not exist!');
}

Как это может быть, что я могу изменить значение консолью, но не в скрипте?

edit:

работает с задержкой! Большое вам спасибо!

Ответы [ 3 ]

0 голосов
/ 09 апреля 2020

Работает совершенно верно, я не получаю твоих жалоб ...

document.getElementById("searchResults").innerHTML = '<input id="txtSearchBelow"class="form-control" type="text" placeholder="Search..">'+'<br>';
var inputBelow = document.getElementById("txtSearchBelow");
console.log(inputBelow);
console.log('until here it seems fine.');
var element = document.getElementById("txtSearchBelow");
// If it isn't "undefined" and it isn't "null", then it exists.
if (typeof(element) != 'undefined' && element != null) {
    console.log('Element exists!');
    // This line works for me...!
    document.getElementById("txtSearchBelow").value = 'eyyy please access me'; 
} else {
    console.log('Element does not exist!');
}
<div id="searchResults"></div>
0 голосов
/ 09 апреля 2020

Может быть, это проблема браузера? Компьютерная система и задержка загрузки возможна. Я могу запустить это

0 голосов
/ 09 апреля 2020

Я бы сказал, что из-за времени рендеринга создание элемента занимает больше времени, чем логика c, который следует за ним.

Значение вашего var element = document.getElementById ("txtSearchBelow" ); выполняется до того, как элемент известен браузеру.

Установите таймер задержки перед вызовом document.getElementById ("txtSearchBelow")

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