Дифференцировать типы элементов HTML в языке сценариев JavaScript или jQuery

У меня есть серия labels в моем виде JSP. Каждый label покажи единицу средства и в случае когда хочет издать ее, заменяется путь javascript одним input путь кнопка.

ЗАМЕТЬ: столько labels как неудар в лунку - элементы с class = "CCC_UNIDAD", чтобы повторять их позже. html вытекающим упрощенный осталось бы что-либо подобное:

<label class="CCC_UNIDAD">%</label>
<input class="CCC_UNIDAD">
<input class="CCC_UNIDAD" value="$">
<label class="CCC_UNIDAD">€</label>

$.each($(".CCC_UNIDAD"), function (index, value) {
    var valor = value.textContent === undefined 
                                  ? (value.value === undefined ? "" : value.value) 
                                  : value.textContent; 
    alert("VALOR = " + valor);
});

Как véis, в snippet, я пробую брать стоимость label (value.textContent), если у него этого нет, я ищу стоимость неудара в лунку value.value но не функционируй правильно.

Как я могу дифференцировать, что тип элемента - переменная value чтобы так брать признак, соответствующий каждому типу?

10
задан 10.12.2015, 15:38
3 ответа

Во-первых, поскольку он упоминает @rnrneverdies о HTML, не будь хорошо сформирован. Этикетки неудар в лунку не идут tag завершения но они автозакрытые.

Правильная форма должна быть:

<label class="CCC_UNIDAD">%</label>
<input class="CCC_UNIDAD" value=""/>
<input class="CCC_UNIDAD" value="$" />
<label class="CCC_UNIDAD">€</label>

Потом чтобы получать стоимость или текст ты можешь использовать оператор ||

$(".CCC_UNIDAD").each(function(){
    alert("VALOR = " + ($(this).val() || $(this).text()));
});

В конце концов в твоем случае все осталось бы как sgte snippet

$("button").click(function(){
    $(".CCC_UNIDAD").each(function(){
        alert("VALOR = " + ($(this).val() || $(this).text()));
    });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<label class="CCC_UNIDAD">%</label>
<input class="CCC_UNIDAD" value=""/>
<input class="CCC_UNIDAD" value="$" />
<label class="CCC_UNIDAD">€</label>	
<button>Hazme clic me para probar</button>
12
ответ дан 24.11.2019, 15:08
  • 1
    html вопроса уже был исправлен, спасибо за ответ, нашел nodeName, но мне не казался очень элегантным, спасибо!!! – Jordi Castilla 03.12.2015, 14:42

Ты можешь использовать свойство nodeName, здесь я оставляю тебе пример.

(ты будешь должен открывать консоль F12, чтобы видеть результаты)

заметь: элемент неудар в лунку, в html5, не идет tag завершения. Он инициализируется, как видят внизу.

$(document).ready(function() {
  $.each($(".CCC_UNIDAD"), function(index, value) {
    if (value.nodeName === "INPUT") {
      console.log(value.value);
    }
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label class="CCC_UNIDAD">Label1</label>
<input class="CCC_UNIDAD" value="v1">
<input class="CCC_UNIDAD" value="v2">
<label class="CCC_UNIDAD">Label2</label>
4
ответ дан 24.11.2019, 15:08

Если ты хочешь узнать tag объекта, ты можешь делать это (с тобой cГіdigo):

var objetos = document.getElementsByClassName('CCC_UNIDAD');

for(index in objetos){
  console.log(objetos[index].tagName);
}

.tagName говорит тебе, 'DIV', 'INPUT', 'TABLE' ли это, и т.д....

-2
ответ дан 24.11.2019, 15:08
  • 1
    Это быть должным и # 237; чтобы быть комментарием, так как это не конкретный ответ. – Wilfredo 03.12.2015, 14:16
  • 2
    маленький troll est и # 225; s факт – eugenio 03.12.2015, 14:18
  • 3
    Он не состоит в том, чтобы быть troll, в StackOverflow существует код как спрашивать и как отвечание, что я делаю, состоит в том, чтобы у сайта было качество, так как я продаю английского SO. Правда извиняет, если это беспокойство или я такой раз как troll, но я рекомендую тебе проходить по помощи и sabr и # 225; s, потому что я размещаю комментарии в вопросах / ответах, которые я считаю, что est и # 225; n плохо сделанные или нет informaci и # 243; n. – Wilfredo 03.12.2015, 14:24
  • 4
    Эухенио, @WilfredoP прав, кроме того, не отвечает на мой вопрос, потому что, если ты читаешь внимательно, ты увидишь, что я нуждаюсь в том, чтобы знать, объекта, который я повторяю, один input ли или одна label, но с typeof value он будет возвращать мне всегда object – Jordi Castilla 03.12.2015, 14:29
  • 5
    кроме того, если ты удаляешь ответ, сейчас ты достигнешь +6 rep и медаль presión popular – Jordi Castilla 03.12.2015, 15:25

Теги

Похожие вопросы