Communities

Writing
Writing
Codidact Meta
Codidact Meta
The Great Outdoors
The Great Outdoors
Photography & Video
Photography & Video
Scientific Speculation
Scientific Speculation
Cooking
Cooking
Electrical Engineering
Electrical Engineering
Judaism
Judaism
Languages & Linguistics
Languages & Linguistics
Software Development
Software Development
Mathematics
Mathematics
Christianity
Christianity
Code Golf
Code Golf
Music
Music
Physics
Physics
Linux Systems
Linux Systems
Power Users
Power Users
Tabletop RPGs
Tabletop RPGs
Community Proposals
Community Proposals
tag:snake search within a tag
answers:0 unanswered questions
user:xxxx search by author id
score:0.5 posts with 0.5+ score
"snake oil" exact phrase
votes:4 posts with 4+ votes
created:<1w created < 1 week ago
post_type:xxxx type of post
Search help
Notifications
Mark all as read See all your notifications »
Q&A

Welcome to Software Development on Codidact!

Will you help us build our independent community of developers helping developers? We're small and trying to grow. We welcome questions about all aspects of software development, from design to code to QA and more. Got questions? Got answers? Got code you'd like someone to review? Please join us.

Comments on Delete all occurrences of a character in a webpage with vanilla JavaScript

Parent

Delete all occurrences of a character in a webpage with vanilla JavaScript

+5
−1

Primarily for learning, I would like to try to delete a specific character (letter or number or special character), wherever it is in a webpage, with vanilla JavaScript.

The webpage won't change at all; it will stay almost the same but just without that character.


It doesn't matter where that character would appear:

  • In the start of a line
  • In the end of a line
  • Inside a word
  • Outside a word
  • Between two field separators (whitespaces/tabulations, etc.)

Wherever it will appear, it will be deleted.


What would be a vanilla JavaScript "brute force" tool to do so and how would you prefer to do so if asked by a client?

If I am not mistaken "Tree walker" is a JavaScript concept which should be useful here.

History
Why does this post require moderator attention?
You might want to add some details to your flag.
Why should this post be closed?

2 comment threads

replace() on innerHTML (5 comments)
Some musings... (3 comments)
Post
+4
−0

With the help of a little recursion, it's straightforward to go through all text nodes and replace their contents:

function replaceIn(e) {
  if (e.nodeType == Node.TEXT_NODE) {
    e.nodeValue = e.nodeValue.replaceAll("a", "");
  } else {
    for (const child of e.childNodes) {
      replaceIn(child);
    }
  }
}

replaceIn(document.body);
History
Why does this post require moderator attention?
You might want to add some details to your flag.

1 comment thread

Hello Meriton ! I think about deleting my own answer so only yours would be kept but I am having hard... (2 comments)
Hello Meriton ! I think about deleting my own answer so only yours would be kept but I am having hard...
deleted user wrote almost 2 years ago

Hello Meriton ! I think about deleting my own answer so only yours would be kept but I am having hard time to understand the code in your answer (of course, it's my very own fault !).

1) It contains indication for more than one type node in a DOM (moreover, with a dedicated property):

nodeType == Node.TEXT_NODE

2) It contains an "on the fly" variable declaration:

const child of e.childNodes

3) The first function is called twice while from my minor and basic experience with JavaScript normally it would be called once for a simple operation or for such short of a code snippet.

4) There are no comments which in my opinion are sorely needed in JavaScript treewlaking codes.

Perhaps you would like to publish another answer (or add a variation to the current answer) addressing at least some of these concerns.

I think that what will help me the most is doing it without a function(), for starters.

hkotsubo‭ wrote almost 2 years ago · edited almost 2 years ago

deleted user The "on the fly variable declaration" is simply the syntax of the for..of statement: for (const child of e.childNodes) loops through e.childNodes, and in each iteration, the next element is set to the child variable. That's all (and by doing that, you also limit the variable's scope, so it exists only inside this loop).

And the function is called "twice" because it's recursive (so it actually calls itself): first you initially call it for an element, and then it's called again for each of its children elements (which, in turn, will call it again for each child's children, and so on - that's how recursion works)