Во-первых, я хотел бы отметить, что, поскольку вы назначили свою функцию на const
, она не будет поднята, и поэтому вы не можете вызвать ее до объявления ее . Если вам необходимо объявить его впоследствии по какой-либо причине, используйте ключевое слово function
.
Рабочий пример
В примере ASCII в этом примере только заглавные буквы будут иметь другой класс так что вы можете использовать простое регулярное выражение , например /[A-Z]/
, для проверки каждой буквы:
const bear = document.querySelector('.bear')
bear.innerHTML = sparanWrap(bear.textContent)
function sparanWrap(word) {
// define helper function to identify uppercase letters
let applyClass = letter => /[A-Z]/.test(letter) ? ' class="play"' : ''
//apply function inside template string
return [...word].map((letter) => `<span${applyClass(letter)}>${letter}</span>`).join('')
}
Редактировать: Я понял необработанные угловые скобки может быть плохой идеей - хотя это тег pre
, если бы он был чем-то еще, он мог бы заставить браузер интерпретировать его как открывающий тег HTML.
Это, однако, вряд ли безопасно для неизбирательного использования в искусстве ASCII. Если каким-либо образом буквы, которые вы хотите заменить в искусстве, также отображаются как part искусства (например, если c
в ушах были в верхнем регистре), я бы предложил вам обернуть буквы в какой-то определенной c маркировке (например, используемые для HTML комментариев: <!--
и -->
), тогда вы можете включить их в свое регулярное выражение, например:
/<!--[A-Z]-->/