Estoy tratando de obtener todos los elementos con id feed_item_{n} donde {n} puede ser cualquier número entero mayor que 0.
Sé que puedo usar document.querySelectorAll('[id^="feed_item_"]') pero eso realmente no ayuda porque también obtengo elementos con estos ID: feed_item_0_x , feed_item_x_0 donde x puede ser cualquier cadena
¿Hay alguna forma rápida de lograrlo en una sola línea en lugar de pasar por encima de todos los elementos que obtuve del comando anterior y filtrarlos?
Dado que no es posible usar RegEx dentro de los selectores de atributos, la única forma es filtrar el resultado de querySelectorAll ; y allí... puede usar una expresión regular para hacer coincidir solo los números después de feed_item_
sera algo asi
let items = [...document.querySelectorAll('[id^="feed_item_"]')].filter( (item) => item.id.match(/\d+$/) );También puede usar :not atributo, para obtener elementos cuya id no tiene _x por :not([id*="_x"]
const items = document.querySelectorAll('[id^="feed_item_"]:not([id*="_x"])') console.log([...items]) <div id="feed_item_1">feed_item_1</div> <div id="feed_item_2">feed_item_2</div> <div id="feed_item_x_1">feed_item_x_1</div> <div id="feed_item_1_x">feed_item_1_x</div>