Codegolf — Напишите Кратчайший Метод Получения/Установки Текста В Элементе Для Dom.

  • Автор темы 09dr
  • Обновлено
  • 22, Oct 2024
  • #1

Точно так же, как jQuery innerHTML , write one or two functions that can get and set the text on an element.

Вы не можете использовать innerText or textContent , и даже меньше $.fn.text .

Обычный яваскрипт. Нет библиотеки DOM. Он должен работать в основных браузерах. (Не нужно заботиться о старом IE.)

Самый короткий код выигрывает.

Наслаждаться!

#код-гольф #javascript

09dr


Рег
26 Oct, 2019

Тем
95

Постов
187

Баллов
692
  • 26, Oct 2024
  • #2

JavaScript (167)

 
 
 
 
 t=(e,h)=>h?.sub?[...e.children].map(c=>e.removeChild(c))&&e.appendChild(document.createTextNode(h)):(e.data||'')+[...e.childNodes].map(c=>t(c))
 

Использование:

function t(e,v){if(!v&&v!=''){v=e.data||'';for each(c in e.childNodes)v+=t(c);return v}else{ while(c=e.lastChild)e.removeChild(c);e.appendChild(document.createTextNode(v))}}

Обратите внимание, что глобальное пространство имен не загрязняется.

Демонстрация, с многоуровневым деревом DOM и несколькими тестами

 

Trollface6666


Рег
18 May, 2015

Тем
62

Постов
200

Баллов
520
  • 26, Oct 2024
  • #3

JavaScript (175)

function t(e,v,f){if(!v&&v!=''){v=e.data||'';for(c in f=e.childNodes)v+=t(f[c]);return v}else{ while(c=e.lastChild)e.removeChild(c);e.appendChild(document.createTextNode(v))}}

Морали у меня существенно меньше, чем у @dystroy, поэтому не заморачивался вар. мне пришлось присмотреться ж хотя, и я сделал это несколько умно.

Тем не менее, наши ответы очень похожи, и я не уверен, что есть лучший способ сделать это.

С признанием коллекции (173):

var textContent = t(yourElement); // get the text content t(yourElement, ''); // clear t(yourElement, newText); // sets a new text ||answer||

JavaScript (V8), 143 байта

function t(e,h,f){if(h||h==''){while(f=e.lastChild)e.removeChild(f);e.appendChild(document.createTextNode(h))}h=e.data||'';for(c in f=e.childNodes)h+=t(f[c]);return h}
 

Doomspace


Рег
30 Jan, 2007

Тем
76

Постов
174

Баллов
584
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно