Guidance Request (and a specific question)

E

eBob.com

I am wondering if JavaScript is a reasonable way to solve my problem. I
have to snatch some info from a web page and build a report. Some of the
info comes from the web page and some will be supplied by the end user.
This process will be initiated by the end user clicking on a menu item in
the IE (6.0) Tools menu. I will need to access the html of the web page and
then solicit some input from the end user via some form or something
similar. I know that's rather vague but does it seem feasible?

Thus far I am trying to access the html of the page and it's been tough
going. One of the bits of info I want to snatch from a web page is a
telephone number, which, on one of the web sites, looks like this ...

<table cellpadding='0' cellspacing='0' align='center'>
<tr>
<td align='center' class='class_20' >Telphone: <span class='class_23'
style="font-size:14px;font-weight:bold;">111-222-3333</span></td>
</tr>
</table>

After reading the first few chapters in a JavaScript book and looking at
some DOM reference material, I've, so far, got the following:

<script type="text/javascript">
var parentwin = external.menuArguments;
var doc = parentwin.document;
var x = doc.getElementsByTagName("td")
alert(x.length + " td things")
// alert(x[0].toString)
for (whatever in x)
{ alert(whatever.nodeName)
}
</script>

I've tried many, many things but I have been unable to find the text I am
after - in this case "Telephone:" and the telephone number, "111-222-3333".
The objects returned by getElementsByTagName don't seem to have a toString
method, which I had hoped would give me "<td ... </td>". I am currently
trying to learn something about DOM "nodes" - but I am not at all sure that
that will be the answer. So, the specific question I promised - how do I
grab the strings "Telephone:" and "111-222-3333" from the html shown above.

Thanks for whatever help, pointers, sympathy you are kind enough to provide.
Bob
 
M

Martin Honnen

eBob.com said:
<table cellpadding='0' cellspacing='0' align='center'>
<tr>
<td align='center' class='class_20' >Telphone: <span class='class_23'
style="font-size:14px;font-weight:bold;">111-222-3333</span></td>
</tr>
</table>

After reading the first few chapters in a JavaScript book and looking at
some DOM reference material, I've, so far, got the following:

<script type="text/javascript">
var parentwin = external.menuArguments;
var doc = parentwin.document;

I've tried many, many things but I have been unable to find the text I am
after - in this case "Telephone:" and the telephone number, "111-222-3333".
The objects returned by getElementsByTagName don't seem to have a toString
method, which I had hoped would give me "<td ... </td>".

With IE's HTML DOM the element nodes have properties innerText,
innerHTML and outerHTML. Also table elements objects have a rows
collection and rows have a cells collection. That way
var table1 = doc.getElementsByTagName('table')[0];
var cell1 = table1.rows[0].cells[0];
var text = cell1.innerText;
That cell above has a couple of child nodes, its firstChild is a text
node with the text "Telphone: ", its second child is a span element so
you could use
var text1 = cell1.firstChild.nodeValue;
and
var text2 = cell1.childNodes[1].innerText;
to have text1 hold the text "Telphone: " and text2 hold the text
"111-222-3333"
 
E

eBob.com

Martin Honnen said:
eBob.com said:
<table cellpadding='0' cellspacing='0' align='center'>
<tr>
<td align='center' class='class_20' >Telphone: <span class='class_23'
style="font-size:14px;font-weight:bold;">111-222-3333</span></td>
</tr>
</table>

After reading the first few chapters in a JavaScript book and looking at
some DOM reference material, I've, so far, got the following:

<script type="text/javascript">
var parentwin = external.menuArguments;
var doc = parentwin.document;

I've tried many, many things but I have been unable to find the text I am
after - in this case "Telephone:" and the telephone number,
"111-222-3333". The objects returned by getElementsByTagName don't seem
to have a toString method, which I had hoped would give me "<td ...
</td>".

With IE's HTML DOM the element nodes have properties innerText, innerHTML
and outerHTML. Also table elements objects have a rows collection and rows
have a cells collection. That way
var table1 = doc.getElementsByTagName('table')[0];
var cell1 = table1.rows[0].cells[0];
var text = cell1.innerText;
That cell above has a couple of child nodes, its firstChild is a text node
with the text "Telphone: ", its second child is a span element so you
could use
var text1 = cell1.firstChild.nodeValue;
and
var text2 = cell1.childNodes[1].innerText;
to have text1 hold the text "Telphone: " and text2 hold the text
"111-222-3333"

Thank you VERY much Martin! That's exactly what I needed. Bob
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,764
Messages
2,569,564
Members
45,041
Latest member
RomeoFarnh

Latest Threads

Top