Существует ли имя XSLT - элемента?

Обратите внимание, что e в обработчике событий часто используется для ссылки на переданный параметр event - чтобы избежать путаницы, вы можете рассмотреть возможность использования другого имени, например, button или skMinButton или что-то в этом роде.

Один из вариантов - сначала перебрать все кнопки и удалить их свойство background:

const buttons = document.querySelectorAll("[name=skMin]");
buttons.forEach((skMinButton) => {
  skMinButton.addEventListener('click', () => {
    buttons.forEach((button) => {
      button.style.removeProperty('background');
    });
    skMinButton.style.background = 'cyan'
    // drillSession.skillMin = e.value
  });
});
<span>Minimum Skill Level:</span><br />
<input type='button' id='skMin1' class='btn-sm' name='skMin' value='1' checked>
<input type='button' id='skMin2' class='btn-sm' name='skMin' value='2'>
<input type='button' id='skMin3' class='btn-sm' name='skMin' value='3'>
<input type='button' id='skMin4' class='btn-sm' name='skMin' value='4'>
<input type='button' id='skMin5' class='btn-sm' name='skMin' value='5'>

[1123 ] Более эффективной возможностью было бы сохранение ранее выбранной кнопки в переменной и удаление только ее background:

const buttons = document.querySelectorAll("[name=skMin]");
let selectedButton;
buttons.forEach((skMinButton) => {
  skMinButton.addEventListener('click', () => {
    if (selectedButton) {
      selectedButton.style.removeProperty('background');
    }
    selectedButton = skMinButton;
    skMinButton.style.background = 'cyan'
    // drillSession.skillMin = e.value
  })
})
<span>Minimum Skill Level:</span><br />
<input type='button' id='skMin1' class='btn-sm' name='skMin' value='1' checked>
<input type='button' id='skMin2' class='btn-sm' name='skMin' value='2'>
<input type='button' id='skMin3' class='btn-sm' name='skMin' value='3'>
<input type='button' id='skMin4' class='btn-sm' name='skMin' value='4'>
<input type='button' id='skMin5' class='btn-sm' name='skMin' value='5'>
[ 1128]

Вы также можете рассмотреть возможность использования делегирования событий, чтобы подключался только один слушатель, а не отдельный для каждой кнопки:

[ 114]
<div class="min-skill">
  <span>Minimum Skill Level:</span><br />
  <input type='button' id='skMin1' class='btn-sm' name='skMin' value='1' checked>
  <input type='button' id='skMin2' class='btn-sm' name='skMin' value='2'>
  <input type='button' id='skMin3' class='btn-sm' name='skMin' value='3'>
  <input type='button' id='skMin4' class='btn-sm' name='skMin' value='4'>
  <input type='button' id='skMin5' class='btn-sm' name='skMin' value='5'>
</div>

98
задан Dimitre Novatchev 17 October 2010 в 20:35
поделиться

4 ответа

Это даст Вам имя элемента тока (имя тега)

<xsl:value-of select ="name(.)"/>

OP-редактирование: Это также добьется цели:

<xsl:value-of select ="local-name()"/>
151
ответ дан Robert Gould 24 November 2019 в 05:09
поделиться

Никто действительно не указывал на тонкое различие в семантике функций name() и local-name() .

  • name(someNode) возвраты полное имя узла, и это включает префикс и двоеточие в случае, если узел является элементом или атрибутом.
  • local-name(someNode) возвраты только локальное название узла, и это не включает префикс и двоеточие в случае, если узел является элементом или атрибутом.

Поэтому в ситуациях, где имя может принадлежать двум различным пространствам имен, нужно использовать эти name() функция для этих имен, которые все еще отличат.

И, BTW, возможно определить обе функции без любого аргумента :

name() сокращение для [1 122] name(.)

local-name() , сокращение для [1 124] local-name(.)

Наконец , помните, что не только элементы и атрибуты имеют имена, эти две функции могут также использоваться на ПИ, и на них они идентичны).

100
ответ дан Dimitre Novatchev 24 November 2019 в 05:09
поделиться
<xsl:for-each select="person">
  <xsl:for-each select="*">
    <xsl:value-of select="local-name()"/> : <xsl:value-of select="."/>
  </xsl:for-each>  
</xsl:for-each>
14
ответ дан bluish 24 November 2019 в 05:09
поделиться
<xsl:value-of select="name(.)" /> : <xsl:value-of select="."/>
6
ответ дан bluish 24 November 2019 в 05:09
поделиться
Другие вопросы по тегам:

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