[Greasemonkey] Basic JavaScript questions
The Chris Method
thechrisproject at gmail.com
Wed Jun 29 16:32:42 EDT 2005
Here's the whole shebang so far:
// ==UserScript==
// @name Overheard in NY cleaner
// @namespace http://thechrisproject.com
// @description example script to alert "Hello world!" on every page
// @include http://overheardinnewyork.com/*
// @include http://www.overheardinnewyork.com/*
// ==/UserScript==
(function() {
var e, i, all;
all = document.getElementsByTagName("h3");
for (i = 0; all.length > 0; i++) {
e = all[i];
GM_log('i:' + i + ' removing node:' + e.firstChild.nodeValue + ' all.length:'
+ all.length);
e.parentNode.removeChild(e);
}
})();
On today's overheardinnewyork page, it logs 18 iterations of the loop. The
all.length value is one less every iteration, as chris indicated above. The
next statement in the console is an error that e has no properties. When
looking at the page, there are still quite a few h3 tags showing.
On 6/29/05, chris feldmann <cfeldmann at gmail.com> wrote:
>
> Sorry, accidentally sent. Anyway, I wanted to note that simply cut and
> pasted, your script works just fine for me. The log looks like this:
>
> /inner: removing node [object Text] all.length: 21
> /inner: removing node [object Text] all.length: 20
> /inner: removing node [object Text] all.length: 19
> /inner: removing node [object Text] all.length: 18
>
>
> And all the H3's are gone. Possibly the include parameter is not being set
> correctly on install (I seem to have to do it manually as a rule)?
>
> On 6/29/05, chris feldmann <cfeldmann at gmail.com> wrote:
> >
> > 1. e.nodeValue
> > 2. is it maybe getting shorter because you're removing a node on each
> > iteration?
> >
> > And when you say it's doing nothing, you mean other than logging, right?
> > What exactly is getting logged?
> >
> >
> > On 6/29/05, The Chris Method < thechrisproject at gmail.com> wrote:
> >
> > > I'm trying to write a basic script, one that removes all <h3> tags
> > > from a certain webpage (overheardinnewyork.com<http://overheardinnewyork.com>).
> > > I have some pretty basic JavaScript<http://en.wikipedia.org/wiki/JavaScript>questions:
> > >
> > > 1) In debugging my code, I've been trying to figure out a way to
> > > access the info inside the tags, i.e. the "text" in <h3>text</h3>. If
> > > 'e' is a node representing this element, how do I get the text inside?
> > > e.firstChild gives me [object Text] and e.firstChild.value gives me
> > > 'undefined'.
> > >
> > > 2) My first guess on how to actually accomplish the aforementioned
> > > task was this:
> > >
> > > (function() {
> > > var e, i, all;
> > >
> > > all = document.getElementsByTagName("h3");
> > > for (i = 0; i < all.length; i += 1) {
> > > e = all[i];
> > > GM_log('removing node ' + e.firstChild + ' all.length: ' + all.length
> > > );
> > > e.parentNode.removeChild(e);
> > > }
> > > })();
> > >
> > >
> > > This does nothing. 'all', which is supposed to be a read-only array
> > > (according to my JS ref book), gets one item shorter every time I iterate
> > > through the for loop, and i increments. So then I change the condition on
> > > the loop from i<all.length to all.length>0. This removes them all. But
> > > it seems ugly to me. I guess I'm looking for code critiques and ideas for
> > > better ways to do this. Could this all be done with some sort of css fun?
> > >
> > > If my approach is to just remove the h3 elements entirely, what is the
> > > best way?
> > > _______________________________________________
> > > Greasemonkey mailing list
> > > Greasemonkey at mozdev.org
> > > http://mozdev.org/mailman/listinfo/greasemonkey
> > >
> > >
> > >
> >
>
> _______________________________________________
> Greasemonkey mailing list
> Greasemonkey at mozdev.org
> http://mozdev.org/mailman/listinfo/greasemonkey
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mozdev.org/pipermail/greasemonkey/attachments/20050629/c7f308f5/attachment.htm
More information about the Greasemonkey
mailing list