f



newbie: insertBefore, Invalid Argument error

Hey

I'm trying to use javascript to dynamically add text to the web page. It 
should work like this: The user tryes to click on a link in the web page. 
The link executes a javascript method, which checks if a hidden html field 
has a value. If that hidden field has no value then the javascript should 
display a message (not using alert, but insert a html element into the code) 
on the web page telling the user that he need to save the form before 
clicking on that link..

Below is the approach I've tryed to solve this by... I just posted the code 
I have problem with... the check if the hidden field has a value etc is 
working okay, so I didn't post it... if you need to see that code too, just 
tell me and I'll post that too.

This javascript gives an Invalid Argument error

This is the html code the javascript below are trying to insert an element 
before
<div id="error"></div>

var oNewP = document.createElement("div");
var oText = document.createTextNode("Hello World");
oNewP.appendChild(oText);
var v1 = document.getElementById("error");
document.body.insertBefore(oNewP, v1);

Any suggestions?

Best Regards

Jeff


0
Jeff
1/26/2007 4:17:27 AM
comp.lang.javascript 38370 articles. 1 followers. javascript4 (1315) is leader. Post Follow

3 Replies
297 Views

Similar Articles

[PageSpeed] 35


On Jan 26, 2:17 pm, "Jeff" <it_consulta...@hotmail.com.NOSPAM> wrote:
> Hey
>
> I'm trying to use javascript to dynamically add text to the web page. It
> should work like this: The user tryes to click on a link in the web page.
> The link executes a javascript method, which checks if a hidden html field
> has a value. If that hidden field has no value then the javascript should
> display a message (not using alert, but insert a html element into the code)
> on the web page telling the user that he need to save the form before
> clicking on that link..
>
> Below is the approach I've tryed to solve this by... I just posted the code
> I have problem with... the check if the hidden field has a value etc is
> working okay, so I didn't post it... if you need to see that code too, just
> tell me and I'll post that too.
>
> This javascript gives an Invalid Argument error
>
> This is the html code the javascript below are trying to insert an element
> before
> <div id="error"></div>
>
> var oNewP = document.createElement("div");
> var oText = document.createTextNode("Hello World");
> oNewP.appendChild(oText);
> var v1 = document.getElementById("error");
> document.body.insertBefore(oNewP, v1);
>
> Any suggestions?

v1 probably isn't a direct child of the body.  Try:

  v1.parentNode.insertBefore(oNewP, v1);


-- 
Rob

0
RobG
1/26/2007 5:42:45 AM
"RobG" <rgqld@iinet.net.au> wrote in message 
news:1169790164.969772.178130@h3g2000cwc.googlegroups.com...
>
>
> On Jan 26, 2:17 pm, "Jeff" <it_consulta...@hotmail.com.NOSPAM> wrote:
>> Hey
>>
>> I'm trying to use javascript to dynamically add text to the web page. It
>> should work like this: The user tryes to click on a link in the web page.
>> The link executes a javascript method, which checks if a hidden html 
>> field
>> has a value. If that hidden field has no value then the javascript should
>> display a message (not using alert, but insert a html element into the 
>> code)
>> on the web page telling the user that he need to save the form before
>> clicking on that link..
>>
>> Below is the approach I've tryed to solve this by... I just posted the 
>> code
>> I have problem with... the check if the hidden field has a value etc is
>> working okay, so I didn't post it... if you need to see that code too, 
>> just
>> tell me and I'll post that too.
>>
>> This javascript gives an Invalid Argument error
>>
>> This is the html code the javascript below are trying to insert an 
>> element
>> before
>> <div id="error"></div>
>>
>> var oNewP = document.createElement("div");
>> var oText = document.createTextNode("Hello World");
>> oNewP.appendChild(oText);
>> var v1 = document.getElementById("error");
>> document.body.insertBefore(oNewP, v1);
>>
>> Any suggestions?
>
> v1 probably isn't a direct child of the body.  Try:
>
>  v1.parentNode.insertBefore(oNewP, v1);
>
>
> -- 
> Rob
>

Thanks, now the "Hello World" is displayed when this code is executed. but 
just one more thing.. I want the Hello World to be displayed with red text 
centered on the screen also:
var oNewP = document.createElement('div style="color:red; 
text-align:center;"');
var oText = document.createTextNode("Hello World");
oNewP.appendChild(oText);
var v1 = document.getElementById("error");
v1.parentNode.insertBefore(oNewP, v1);

But this code generate this error:
"Unexpected call to method or property access", in my opinion that error is 
related to
var oNewP = document.createElement('div style="color:red; 
text-align:center;"');

Any suggestions?


0
Jeff
1/26/2007 8:51:27 AM
Jeff wrote:

> var oNewP = document.createElement('div style="color:red; 
> text-align:center;"');

var oNewP = document.createElement('div');
oNewP.style.color = 'red';
oNewP.style.textAlign = 'center';

-- 
Toby A Inkster BSc (Hons) ARCS
Contact Me  ~ http://tobyinkster.co.uk/contact

0
Toby
1/27/2007 1:00:49 PM
Reply: