Как я могу получить это значение с помощью окна предупреждения? - PullRequest
1 голос
/ 09 июля 2020

На моем веб-сайте у меня есть файл html со следующей конфигурацией:

<script>
window.Conf.page = window.Conf.page || {};
    
$.extend(Conf.page, {"newNotifications":false,"userId":"125"}
</script>

На той же странице мне нужно получить значение userId с помощью скрипта и отобразить его в предупреждении коробка. Я пробовал использовать этот сценарий:

<script>
alert(document.getElementsByName('userId'))
</script>

Но я получаю [object NodeList] внутри окна предупреждения.

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

Ответы [ 4 ]

0 голосов
/ 09 июля 2020

Я думаю, что вы ищете getElementById, если ищете тег HTML, или в вашем случае здесь просто window.Conf.page.userId, чтобы получить значение.

window.pageConf = window.pageConf || {};
$.extend(pageConf, {"newNotifications":false,"userId":"125"});

function onTestClick() {
  var a = document.getElementsByName('userId');
  document.getElementById('myLabelId').innerText = a.length;
  // Result: 0

  document.getElementById('myLabelId').innerText += " " + window.pageConf.userId;
  // Result: 125
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button onclick="onTestClick()">Test</button><br/><br/>
<label id="myLabelId"></label>

Сказав это, давайте поговорим об «имени» в теге.

getElementsByName возвращает массив, потому что Name не уникален для элемента. Имя используется в основном для двух вещей:

  1. Для обратной передачи: при отправке формы значение ввода публикуется с «именем» в теге. Например:

Comments: <input id='myUniqueLocalId' name='comments' />

Чтобы сгруппировать переключатели или флажки вместе. Маленький пример:

function onTestClick() {
  var q1 = document.getElementsByName('q1');
  
  document.getElementById('myLabelId').innerText += " " + q1.length + " " + q1[0].value + " " + q1[1].value;
  // Result: 2 Yes No
}
Question 1: 
<input type="radio" id="Yes" name="q1" value="Yes" checked>
<label for="Yes">Yes</label><be>
<input type="radio" id="No" name="q1" value="No">
<label for="No">No</label><br>

Question 2:
<input type="radio" id="Yes" name="q2" value="Yes">
<label for="Yes">Yes</label><be>
<input type="radio" id="No" name="q2" value="No" checked>
<label for="No">No</label><br>

<button onclick="onTestClick()">Test</button><br/><br/>

<label id="myLabelId"></label>
0 голосов
/ 09 июля 2020
<script>
  window.Conf.page = window.Conf.page || {}; 
  var json = $.extend(Conf.page, {"newNotifications":false,"userId":"125"});

  alert(json.userId);
</script>

или

<script>
  window.Conf.page = window.Conf.page || {}; 
  Conf.page = $.extend(Conf.page, {"newNotifications":false,"userId":"125"});

  alert(Conf.page.userId);
</script>

0 голосов
/ 09 июля 2020

Это получает свойство значения элемента в списке узлов, список узлов - это список всех узлов со свойством имени, совпадающим с тем, которое вы передаете, на случай, если у вас было два поля ввода со свойством имени будучи одинаковыми, их индекс будет равен 0 и 1 соответственно.

document.getElementsByName('userId')[0].value
0 голосов
/ 09 июля 2020

Попробуйте так:

alert(window.Conf.page.userId);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...