Connecting Tech Pros Worldwide Help | Site Map

children["id"].innerText - does not work with netscape but with explorer

 
LinkBack Thread Tools Search this Thread
  #1  
Old July 23rd, 2005, 10:43 AM
Julia Peterwitz
Guest
 
Posts: n/a
Default children["id"].innerText - does not work with netscape but with explorer

I have a function that works with explorer but not with netscape.
The problem is the function at line 5.


1 fSetSelectedDay(myElement){
2 /*
3 ...
4 */
5 var elementText = eval(myElement.children["calDateText"].innerText);
6 /*
7 ...
8 */
9 }
10 <!-- ... -->
11 <td id=calCell onclick='fSetSelectedDay(this)'>
12 <font id='calDateText' onclick='fSetSelectedDay(this)'>
13 <script> myMonth[w][d] </script>
14 </font>
15 </td>
16 <!-- ... -->


I need some support for this.
Thank you very much.

  #2  
Old July 23rd, 2005, 10:43 AM
Randy Webb
Guest
 
Posts: n/a
Default Re: children["id"].innerText - does not work with netscape but withexplorer

Julia Peterwitz wrote:[color=blue]
> I have a function that works with explorer but not with netscape.
> The problem is the function at line 5.
>
>
> 1 fSetSelectedDay(myElement){
> 2 /*
> 3 ...
> 4 */
> 5 var elementText = eval(myElement.children["calDateText"].innerText);[/color]

..innerText is IE only, and as such is not going to work in NS. use
innerHTML instead.

eval is not needed there:

var elementText =
document.getElementById(myElement).children('calDa teText').innerHTML;

the [ ] are also an IE-ism.



--
Randy
Chance Favors The Prepared Mind
comp.lang.javascript FAQ - http://jibbering.com/faq/
  #3  
Old July 23rd, 2005, 10:43 AM
Michael Winter
Guest
 
Posts: n/a
Default Re: children["id"].innerText - does not work with netscape but with explorer

On Wed, 05 May 2004 06:41:28 -0400, Randy Webb <hikksnotathome@aol.com>
wrote:
[color=blue]
> Julia Peterwitz wrote:[color=green]
>> I have a function that works with explorer but not with netscape.
>> The problem is the function at line 5.
>>
>>
>> 1 fSetSelectedDay(myElement){
>> 2 /*
>> 3 ...
>> 4 */
>> 5 var elementText = eval(myElement.children["calDateText"].innerText);[/color]
>
> .innerText is IE only, and as such is not going to work in NS. use
> innerHTML instead.
>
> eval is not needed there:[/color]

Agreed, however...
[color=blue]
> var elementText =
> document.getElementById(myElement).children('calDa teText').innerHTML;[/color]

....there are two problems with this line:

1) If you look at the OP's HTML, you'll see that myElement is a
reference to the element, not an id.
2) The children property is
a) a collection, so the brackets were correct,
b) also a Microsoft-ism.

Perhaps

var elementText = myElement.childNodes[ 'calDateText' ].innerHTML;

would be better (preferably with feature detection)?

Mike

--
Michael Winter
M.Winter@blueyonder.co.invalid (replace ".invalid" with ".uk" to reply)
  #4  
Old July 23rd, 2005, 10:44 AM
julia peterwitz
Guest
 
Posts: n/a
Default Re: children["id"].innerText - does not work with netscape but with explorer

myElement.childNodes[ 'calDateText' ].innerHTML;
is also not working
(it neither works in explorer nor in netscape)

any other proposals for netscape??

solution for explorer again:
myElement.children["calDateText"].innerText;

*** Sent via Developersdex http://www.developersdex.com ***
Don't just participate in USENET...get rewarded for it!
  #5  
Old July 23rd, 2005, 10:44 AM
Michael Winter
Guest
 
Posts: n/a
Default Re: children["id"].innerText - does not work with netscape but with explorer

On 05 May 2004 16:37:14 GMT, julia peterwitz <pi.ti@gmx.de> wrote:
[color=blue]
> myElement.childNodes[ 'calDateText' ].innerHTML;
> is also not working
> (it neither works in explorer nor in netscape)
>
> any other proposals for netscape??[/color]

Oops. I assumed that childNodes was a standard collection that could be
indexed by name/id as well as ordinal. However, I just thought that
'calDateText' is an id, so why don't you just use

document.getElementById( 'calDateText' ).innerHTML

?

Mike

--
Michael Winter
M.Winter@blueyonder.co.invalid (replace ".invalid" with ".uk" to reply)
  #6  
Old July 23rd, 2005, 10:44 AM
Lasse Reichstein Nielsen
Guest
 
Posts: n/a
Default Re: children["id"].innerText - does not work with netscape but withexplorer

pi-ti@gmx.de (Julia Peterwitz) writes:
[color=blue]
> I have a function that works with explorer but not with netscape.
> The problem is the function at line 5.[/color]

You don't say which Netscape. If it's Netscape 4, your options are
very limited. If it's Netscape 6+, i.e., based on Mozilla, then
you can pretty much fly :) I'll assume Netscape 6+.
[color=blue]
> 5 var elementText = eval(myElement.children["calDateText"].innerText);[/color]

I see three problems:
- innerText is IE only.
- children is IE only.
- eval is evil.

There are different options, depending on how standards compliant you
want to be. I'll go for full compliance with the DOM specification
(i.e., avoiding innerHTML).

A version that collects the string content of the calcDateText element
(not recursively, so don't put the text to find inside tags).
---
var span = document.getElementById("calcDateText");
var elementText = "";
for(var chld = span.firstChild; chld; chdl=chld.nextSibling) {
if (chld.nodeType == 3) { // text node
elementText += chld.nodeValue;
}
}
---
Or, change the first line to:
---
var span = myElement.getElementsByTagName("span")[0];
---
(Notice that I use "span" instead of "font" as commented later)
[color=blue]
> 11 <td id=calCell onclick='fSetSelectedDay(this)'>
> 12 <font id='calDateText' onclick='fSetSelectedDay(this)'>[/color]

The font tag is deprecated and you are not using any of its specific
attributes anyway. Change it to a <span> instead, that is just what
you need: a meaningless wrapper.
[color=blue]
> 13 <script> myMonth[w][d] </script>[/color]

The type attribute is required on script tags, so:
---
<script type="text/javascript">
---
Do you mean to document.write the value?
---
document.write(myMonth[w][d]));
---
Where are "w" and "d" calculated? (Meaning Week and Day?)
[color=blue]
> 14 </font>[/color]
</span>

/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
DHTML Death Colors: <URL:http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'
  #7  
Old July 23rd, 2005, 10:45 AM
Julia Peterwitz
Guest
 
Posts: n/a
Default Re: children["id"].innerText - does not work with netscape but with explorer

Lasse Reichstein Nielsen <lrn@hotpop.com> wrote in message news:<hduu4vcs.fsf@hotpop.com>...[color=blue]
> pi-ti@gmx.de (Julia Peterwitz) writes:
>[color=green]
> > I have a function that works with explorer but not with netscape.
> > The problem is the function at line 5.[/color]
>
> You don't say which Netscape. If it's Netscape 4, your options are
> very limited. If it's Netscape 6+, i.e., based on Mozilla, then
> you can pretty much fly :) I'll assume Netscape 6+.[/color]

yes, I thought about netscape 6+
[color=blue]
>[color=green]
> > 5 var elementText = eval(myElement.children["calDateText"].innerText);[/color]
>
> I see three problems:
> - innerText is IE only.
> - children is IE only.
> - eval is evil.
>
> There are different options, depending on how standards compliant you
> want to be. I'll go for full compliance with the DOM specification
> (i.e., avoiding innerHTML).
>
> A version that collects the string content of the calcDateText element
> (not recursively, so don't put the text to find inside tags).
> ---
> var font= myElement.getElementsByTagName("font");
> var elementText = "";[/color]

until here it works.
but the following doesn't start.
and I don't know why.
but there is no error message.
[color=blue]
> for(var chld = font.firstChild; chld; chdl=chld.nextSibling) {
> if (chld.nodeType == 3) { // text node
> elementText += chld.nodeValue;
> }
> }
> ---
>[color=green]
> > 11 <td id=calCell onclick='fSetSelectedDay(this)'>
> > 12 <font id='calDateText' onclick='fSetSelectedDay(this)'>[/color]
>
> The font tag is deprecated and you are not using any of its specific
> attributes anyway. Change it to a <span> instead, that is just what
> you need: a meaningless wrapper.[/color]

I removed the irrelevant attributes.
so I will use <font> further on.
[color=blue]
>[color=green]
> > 13 <script> myMonth[w][d] </script>[/color]
>
> The type attribute is required on script tags, so:
> ---
> <script type="text/javascript">
> ---
> Do you mean to document.write the value?
> ---
> document.write(myMonth[w][d]));[/color]

sorry I forgot to put the document.write around

13 <script> document.write(myMonth[w][d]); </script>

this function notes the days of the months, but this is irrelevant for
the problem. isn't it?
[color=blue]
> ---
> Where are "w" and "d" calculated? (Meaning Week and Day?)
>[color=green]
> > 14 </font>[/color]
> </span>
>
> /L[/color]
  #8  
Old July 23rd, 2005, 10:46 AM
Lasse Reichstein Nielsen
Guest
 
Posts: n/a
Default Re: children["id"].innerText - does not work with netscape but withexplorer

pi-ti@gmx.de (Julia Peterwitz) writes:
[color=blue]
> Lasse Reichstein Nielsen <lrn@hotpop.com> wrote in message news:<hduu4vcs.fsf@hotpop.com>...[color=green]
>> var font= myElement.getElementsByTagName("font");
>> var elementText = "";[/color]
>
> until here it works.
> but the following doesn't start.
> and I don't know why.
> but there is no error message.
>[color=green]
>> for(var chld = font.firstChild; chld; chdl=chld.nextSibling) {[/color][/color]

Damn! :(
That would be the typo: ^^^^ shoud be chld.

That would mean that the loop goes on forever ... doing nothing.

/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
DHTML Death Colors: <URL:http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'
  #9  
Old July 23rd, 2005, 10:47 AM
Julia Peterwitz
Guest
 
Posts: n/a
Default Re: children["id"].innerText - does not work with netscape but with explorer

/*
....
*/

alert("1");
var font = myElement.getElementsByTagName("font");
alert("2");
var elementText = "";
alert("3");
for(var chld = font.firstChild; chld; chld=chld.nextSibling) {
alert("4");
if (chld.nodeType == 3) { // text node
elementText += chld.nodeValue;
}

/*
....
*/

when I start this I'll get the alert's 1,2,3 but the alert 4 doesn't start.
so I think there is something wrong.
but I don't know what.
  #10  
Old July 23rd, 2005, 10:47 AM
Julia Peterwitz
Guest
 
Posts: n/a
Default Re: children["id"].innerText - does not work with netscape but with explorer

Michael Winter <M.Winter@blueyonder.co.invalid> wrote in message news:<opr7jdg3ol5vklcq@news-text.blueyonder.co.uk>...[color=blue]
> On 05 May 2004 16:37:14 GMT, julia peterwitz <pi.ti@gmx.de> wrote:
>[color=green]
> > myElement.childNodes[ 'calDateText' ].innerHTML;
> > is also not working
> > (it neither works in explorer nor in netscape)
> >
> > any other proposals for netscape??[/color]
>
> Oops. I assumed that childNodes was a standard collection that could be
> indexed by name/id as well as ordinal. However, I just thought that
> 'calDateText' is an id, so why don't you just use
>
> document.getElementById( 'calDateText' ).innerHTML
>
> ?
>
> Mike[/color]


elementText = document.getElementById('calDateText').innerHTML;
alert(elementText);

good idea, but elementText is "".
do you know why?
  #11  
Old July 23rd, 2005, 10:47 AM
ZER0
Guest
 
Posts: n/a
Default Re: children["id"].innerText - does not work with netscape but with explorer

On 7 May 2004 01:44:12 -0700, Julia Peterwitz wrote:
[color=blue]
> elementText = document.getElementById('calDateText').innerHTML;
> alert(elementText);[/color]
[color=blue]
> good idea, but elementText is "".
> do you know why?[/color]

Try something like that:

<script type="text/javascript">
function getInnerText(el){
return
el.innerHTML.replace(/(<script[^>]*?>.*?<\/script>)|[\r\n]/gi,"").replace(/<[\/\!]*?[^<>]*?>/g,"");
}

function fSetSelectedDay(el){
alert(">"+getInnerText(el)+"<");
}
</script>

<font id='calDateText'
onclick='fSetSelectedDay(this)'><script>document.w rite('some text,<br />
maybe with <strong>tags</strong>');</script></font>

I hope it helps.


--
C'ya,
ZER0 :: coder.gfxer.webDesigner();

Il computer e' una macchina progettata per velocizzare e automatizzare
gli errori.
  #12  
Old July 23rd, 2005, 10:47 AM
Michael Winter
Guest
 
Posts: n/a
Default Re: children["id"].innerText - does not work with netscape but with explorer

On 7 May 2004 01:44:12 -0700, Julia Peterwitz <pi-ti@gmx.de> wrote:

[snip]
[color=blue]
> elementText = document.getElementById('calDateText').innerHTML;
> alert(elementText);
>
> good idea, but elementText is "".
> do you know why?[/color]

Not a clue. Can you post a complete sample (preferably a URL)?

Mike

--
Michael Winter
M.Winter@blueyonder.co.invalid (replace ".invalid" with ".uk" to reply)
  #13  
Old July 23rd, 2005, 10:52 AM
Julia Peterwitz
Guest
 
Posts: n/a
Default Re: children["id"].innerText - does not work with netscape but with explorer

Michael Winter <M.Winter@blueyonder.co.invalid> wrote in message news:<opr7mm0xgc5vklcq@news-text.blueyonder.co.uk>...[color=blue]
> On 7 May 2004 01:44:12 -0700, Julia Peterwitz <pi-ti@gmx.de> wrote:
>
> [snip]
>[color=green]
> > elementText = document.getElementById('calDateText').innerHTML;
> > alert(elementText);
> >
> > good idea, but elementText is "".
> > do you know why?[/color]
>
> Not a clue. Can you post a complete sample (preferably a URL)?
>
> Mike[/color]

http://www.fligo.de/main/calender.js
is the url for the script

http://www.fligo.de/main/lastminute.php
is the url for the page
  #14  
Old July 23rd, 2005, 11:17 AM
Thomas 'PointedEars' Lahn
Guest
 
Posts: n/a
Default Re: children["id"].innerText - does not work with netscape but withexplorer

Julia Peterwitz wrote:
[color=blue]
> alert("1");
> var font = myElement.getElementsByTagName("font");
> alert("2");
> var elementText = "";
> alert("3");
> for(var chld = font.firstChild; chld; chld=chld.nextSibling) {[/color]
^[color=blue]
> alert("4");
> if (chld.nodeType == 3) { // text node[/color]
^[color=blue]
> elementText += chld.nodeValue;
> }[/color]
^[color=blue]
> /*
> ...
> */
>
> when I start this I'll get the alert's 1,2,3 but the alert 4 doesn't start.
> so I think there is something wrong.
> but I don't know what.[/color]

Looks like there is a closing brace missing. Does the JavaScript
Console tell you anything? If yes, what does it say?


PointedEars
 

Bookmarks

Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On

Popular Articles

What is Bytes?

We are a network of experts and professionals in IT and software development that help one another with answers to tough questions and share insights. Get the best answers to your questions from over 220,989 network members.