this.value неопределенное сообщение показывается в коде JavaScript - PullRequest
1 голос
/ 21 апреля 2019

changeText1(id) показывает неопределенную ошибку, я хочу значение в атрибуте тега привязки

function changeText(id) {
  id.innerHTML = "hii";
}

function changeText1(id) {
  var idq = this.value;
  id.innerHTML = idq;
}
<!DOCTYPE html>
<html>
<body>
  <h1 onclick="changeText(this)">Click on this text!</h1>
  <h1><a onclick="changeText1(this)" value="123">Click on this text!</a></h1>
</body>
</html>

Ответы [ 5 ]

1 голос
/ 21 апреля 2019

Чтобы получить значение из тега привязки, вы должны сделать так

function changeText1(param) {
  var val = param.getAttribute('value'); // ATTRIBUTE-NAME
  param.innerHTML = val;
}
1 голос
/ 21 апреля 2019

Вам нужно взять getAttribute для доступа к нестандартным атрибутам.

Это работает в сочетании с передаваемым значением this, которое составляет id вфункция.

Для лучшего понимания кода, я предлагаю переименовать эту переменную в element.

function changeText(element) {
    element.innerHTML = "hii";
}

function changeText1(element) {
    element.innerHTML = element.getAttribute('value');
}
<h1 onclick="changeText(this)">Click on this text!</h1>
<h1><a onclick="changeText1(this)" value="123">Click on this text!</a></h1>
0 голосов
/ 21 апреля 2019

Нет атрибута с именем value для тега привязки. Вы можете использовать data для хранения значения. Во-вторых, вы можете использовать одну функцию для обеих задач.

   
function changeText(e) {
  // get the current element which is clicked
  let elem = e.target;
  // check if the current element have any dataset with value as a key
  if (elem.dataset.value) {
    elem.innerHTML = elem.dataset.value;
    return;
  }
  elem.innerHTML = "hii";
}
// event is the event object
// value in data-value can be replaced by anything,but prefix data- is necessary 
<h1 onclick="changeText(event)">Click on this text!</h1>
<h1><a onclick="changeText(event)" data-value="123">Click on this text!</a></h1>
0 голосов
/ 21 апреля 2019

value не является допустимым атрибутом для якорных элементов.Если вы хотите сохранить данные приложения в элементе, используйте атрибут data-* и получите к нему доступ, используя свойство dataset.

function changeText(id) {
  id.innerHTML = "hii";
}

function changeText1(id) {
  var idq = id.dataset.value;
  id.innerHTML = idq;
}
<!DOCTYPE html>
<html>
<body>
  <h1 onclick="changeText(this)">Click on this text!</h1>
  <h1><a onclick="changeText1(this)" data-value="123">Click on this text!</a></h1>
</body>
</html>

Кроме того, вы написали this.value, когда должно быть id.value.Но исправление не решит проблему.

0 голосов
/ 21 апреля 2019

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

function changeText1(id) { 
    var idq = id.getAttribute("value");
    id.innerHTML = idq;
}
...