Javascript: uncaught typeerror: невозможно установить для свойства disabled значение null

Я хочу знать, почему моему скрипту не присвоено значение id?

Я использовал этот код в отдельной папке в одном файле с именем test.js. это мой стартовый код.

var myInput = document.getElementById("newPass");
var confInput = document.getElementById("confpsw");
var letter = document.getElementById("letter");
var capital = document.getElementById("capital");
var number = document.getElementById("number");
var length = document.getElementById("length");
var special = document.getElementById("special");    
document.getElementById("Button").disabled = true;

мой код просмотра ...

<button id="Button" class="btn btn-lg btn-primary btn-block btn-signin" type="submit">Submit</button>

У меня такая ошибка ...

Uncaught TypeError: невозможно установить для свойства disabled значение null

почему мой скрипт не работает в cshtml?

Где эта первая строка кода? Ожидает ли он, пока кнопка будет отображена на странице, прежде чем искать ее?

Tyler Roper 10.08.2018 15:51

Обычно это потому, что модель DOM еще не загружена. Но я понятия не имею, как это работает с CSHTML.

Sebastian Simon 10.08.2018 15:52

Куски кода, которые вы показываете, безусловно, должны работать. Ошибка должна быть где-то в другом месте, может быть, больше кода?

WhiteMaple 10.08.2018 15:52

не могли бы вы предоставить нам дополнительную информацию? как вы выполняете свой js? также проверьте ссылку: telerik.com/forums/javascript-getelementbyid-returns-null

justMe 10.08.2018 15:53

Проверьте эту ссылку. stackoverflow.com/questions/14028959/…

Kanchan Jha 10.08.2018 15:54
0
5
18 255
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Ответ принят как подходящий

Кажется, что код запущен до того, как DOM будет готов. Попробуйте с DOMContentLoaded.

The DOMContentLoaded event is fired when the initial HTML document has been completely loaded and parsed, without waiting for stylesheets, images, and subframes to finish loading.

document.addEventListener("DOMContentLoaded", function(event) {
  document.getElementById("Button").disabled = true;
});

вы правы .. но я хочу знать одну вещь, мой скрипт отлично работает с PHP. но почему мой скрипт не работает на C#.

Sridhar kumar 10.08.2018 16:05

@Sridharkumar, положение кода в файле PHP и CSHTML может отличаться. Я предполагаю, что в файле PHP код находится под КНОПКОЙ ........

Mamun 10.08.2018 16:12

Вы сначала загрузили DOM?

window.addEventListener('load', () => {
  document.querySelector('#Button').disabled = true;
});

Кажется, у меня работает. найдите код ниже. это простой HTML-файл.

<html>
<head>
<script type="text/javascript">

function Clicked(){
    document.getElementById("Button").disabled = true;
}

</script>

</head>

<body>

    <button id="Button" class="btn btn-lg btn-primary btn-block btn-signin" type="submit">Submit</button>
    <button type="button" OnClick="Clicked()">Click Me!</button>

</body>
</html>

Код ниже может вам помочь. так как вам необходимо прикрепить лицензию на событие для события Document Content Loaded.

document.addEventListener("DOMContentLoaded", function(event) {
  document.getElementById("Button").disabled = true;
});
.centered {
  color: black;
  width:100px;
  height:30px;
  position: fixed;
  top: 50%;
  left: 50%;
  /* bring your own prefixes */
  transform: translate(-50%, -50%);
}
<button id="Button" class="centered">Test</button>

Это не имеет ничего общего с файлом cshtml.

Если вы поместите строку, чтобы получить элемент Dom в заголовке, он не будет работать, поскольку DOM еще не загружен.

Либо поместите javascript в конец тела (скрипта или кода), либо используйте DOMEvent для запуска JS после загрузки DOM браузером.

В JS: https://developer.mozilla.org/fr/docs/Web/Events/load

В JQuery: https://api.jquery.com/ready/

Другие вопросы по теме