Против кода .value не распознается intellisense - PullRequest
2 голосов
/ 21 марта 2019

Я очень плохо знаком с javascript, но пока я работал, я пытался найти способ получить текст, который пользователь мог бы ввести в текстовое поле ввода html, но по какой-то причине vs код не распознает требуемый intellisense сделать это. [мой HTML-код:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <input type="text" id="first-input">
    <button id="submit-button">Submit</button>
    <script src="main.js" type="text/javascript"></script>
</body>
</html>

] 1

[

let firstInput = document.getElementById('first-input');
let submitButton = document.getElementById('submit-button');

submitButton.onclick = function () {
    console.log(firstInput.value);
}

] 2

Чтобы получить данные внутри входного текстового элемента, используйте код .value, однако, когда я начинаю вводить «.val-», единственная рекомендация, которую имеет VS-код, - это .nodeValue.

опция .value отсутствует, только .nodeValue

Это означает, что для получения того, что я хочу, я использую команду, которую intellisense для кода не распознает. Однако, несмотря на то, что intellisense не находит его, код по-прежнему работает так, как задумано.

код функционален

Что-то мне нужно установить или сделать, чтобы получить доступ к этой информации? Я обеспокоен тем, что есть много других вещей, которые он не распознает и сделает изучение этого языка более сложным. Заранее спасибо

1 Ответ

1 голос
/ 21 марта 2019

Это потому, что getElementById() не обязательно возвращает элемент со свойством .value. Например, он может вернуть элемент <div>.

Чтобы intellisense знал, что у вас будет свойство .value, вы должны указать в комментарии JSDoc, что переменная firstInput будет элементом <input>. Как это:

/**
 * @type HTMLInputElement
 */
let firstInput = document.getElementById('first-input');
/**
 * @type HTMLButtonElement
 */
let submitButton = document.getElementById('submit-button');

submitButton.onclick = function () {
  console.log(firstInput.value);
}

Не смущаю вас, но VSCode использует TypeScript для усиления своего интеллекта, даже для кода JavaScript .

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