Я хочу заменить некоторые определенные промежутки кнопками, и промежутки, которые я хочу заменить, имеют те же имена классов. Как я могу заменить промежутки (на кнопки), если они содержат либо «яблоко», либо «банан», но другие промежутки с «апельсином» или «киви» я не хочу выбирать?
От:
<span class=>
"kiwi"
</span>
<span class=>
"apple"
</span>
<span class=>
"orange"
</span>
<span class=>
"banana"
</span>
К:
<button>
"apple"
</button>
<button>
"banana"
</button>
Код:
function replaceElement (source, tagname) {
var range = document.createRange();
var element = document.createElement(tagname);
range.selectNodeContents(source);
element.appendChild(range.extractContents());
source.parentNode.replaceChild(element, source);
}
var spans = document.querySelectorAll('span'), i;
for (i = 0; i < spans.length; ++i) {
replaceElement(document.querySelector('span'), 'button');
}



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы не можете выбрать элемент на основе внутреннего текста. Но вы можете фильтровать элемент span на основе его внутреннего текстового содержимого.
function replaceElement (source, tagname) {
var range = document.createRange();
var element = document.createElement(tagname);
range.selectNodeContents(source);
element.appendChild(range.extractContents());
source.parentNode.replaceChild(element, source);
}
var spans = document.querySelectorAll('span'), i;
for (i = 0; i < spans.length; ++i) {
if (spans[i].textContent.match('apple') ||spans[i].textContent.match('banana') ){
replaceElement(spans[i], 'button');
}
}<span class=>
"kiwi"
</span>
<span class=>
"apple"
</span>
<span class=>
"orange"
</span>
<span class=>
"banana"
</span>да, мы можем это определить
Спасибо Ankit, это действительно хорошо работает! :) Возможно ли теперь, чтобы "myFunction ()" вызывалась при нажатии кнопки и определяла, какая кнопка была нажата по ее внутреннему тексту?