Connecting Tech Pros Worldwide Help | Site Map

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

  #1  
Old July 23rd, 2005, 11:43 AM
Julia Peterwitz
Guest
 
Posts: n/a
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, 11:43 AM
Randy Webb
Guest
 
Posts: n/a

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


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, 11:43 AM
Michael Winter
Guest
 
Posts: n/a

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, 11:44 AM
julia peterwitz
Guest
 
Posts: n/a

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, 11:44 AM
Michael Winter
Guest
 
Posts: n/a

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, 11:44 AM
Lasse Reichstein Nielsen
Guest
 
Posts: n/a

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


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, 11:45 AM
Julia Peterwitz
Guest
 
Posts: n/a

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, 11:46 AM
Lasse Reichstein Nielsen
Guest
 
Posts: n/a

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


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, 11:47 AM
Julia Peterwitz
Guest
 
Posts: n/a

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, 11:47 AM
Julia Peterwitz
Guest
 
Posts: n/a

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, 11:47 AM
ZER0
Guest
 
Posts: n/a

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, 11:47 AM
Michael Winter
Guest
 
Posts: n/a

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, 11:52 AM
Julia Peterwitz
Guest
 
Posts: n/a

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, 12:17 PM
Thomas 'PointedEars' Lahn
Guest
 
Posts: n/a

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


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
Closed Thread