Javascript: Can't control parent of descendant nodes.
Posted
by .phjasper
on Stack Overflow
See other posts from Stack Overflow
or by .phjasper
Published on 2010-05-13T00:52:46Z
Indexed on
2010/05/13
1:04 UTC
Read the original article
Hit count: 287
I'm creating elements (level 1) dynamically which in turn create elements (level 2) themselves. However, the children of level 2 elements have "body" as their parent.
In the HTML code below, the content if spotAd2 is created by my function createNode(). It's a Google Ad Sense tag. However, the Google Ad Sense tag create elements that went directly under "body". I need them to by under spotAd2.
function createNode( t, // type.
tn, // if type is element, tag name.
a, // if type is element, attributes.
v, // node value or text content
p, // parent
f ) // whether to make dist the first child or not.
{
n = null;
switch( t )
{
case "element":
n = document.createElement( tn );
if( a )
{
for( k in a )
{
n.setAttribute( k, a[ k ] );
}
}
break;
case "text":
case "cdata_section":
case "comment":
n = document.createTextNode(v);
break;
}
if ( p )
{
if( f )
{
p.insertBefore( n, p.firstChild );
}
else
{
p.appendChild( n );
}
}
return n;
}
spotAd2 = document.getElementById("spotAd2");
n1 = createNode("element", "div", {"id":"tnDiv1"}, "\n" , null, true);
n2 = createNode("element", "script", {"type":"text\/javascript"}, "\n" , n1, false);
n3 = createNode("comment", "", null, "\n" +
"google_ad_client = \"pub-0321943928525350\";\n" +
"/* 728x90 (main top) */\n" +
"google_ad_slot = \"2783893649\";\n" +
"google_ad_width = 728;\n" +
"google_ad_height = 90;\n" +
"//\n" , n2, false);
n4 = createNode("element", "script", {"type":"text\/javascript","src":"http:\/\/pagead2.googlesyndication.com\/pagead\/show_ads.js"}, "\n" , n1, false);
--- Result:
<body>
<table cellspacing="2" cellpadding="2" border="1">
<tbody><tr>
<td>Oel ngati kemeie</td>
<td>Kamakto niwin</td>
</tr>
<tr>
<td>The ad:</td>
<td>
<div id="spotAd2">
<!-- Created by createNode() -->
<div id="tnDiv1">
<script type="text/javascript">
google_ad_client = "pub-0321943928525350";
/* 728x90 (main top) */
google_ad_slot = "2783893649";
google_ad_width = 728;
google_ad_height = 90;
</script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
</div>
<!-- Created by createNode() -->
</div>
</td>
</tr>
<tr>
<td>txopu ra'a tsi, tsamsiyu</td>
<td>teyrakup skxawng</td>
</tr>
</tbody></table>
<!-- Created by adsense tag, need these to be under tnDiv1 -->
<script src="http://pagead2.googlesyndication.com/pagead/expansion_embed.js"></script>
<script src="http://googleads.g.doubleclick.net/pagead/test_domain.js"></script>
<script>google_protectAndRun("ads_core.google_render_ad", google_handleError, google_render_ad);</script>
<ins style="border: medium none ; margin: 0pt; padding: 0pt; display: inline-table; height: 90px; position: relative; visibility: visible; width: 728px;">
<ins style="border: medium none ; margin: 0pt; padding: 0pt; display: block; height: 90px; position: relative; visibility: visible; width: 728px;">
<iframe width="728" scrolling="no" height="90" frameborder="0" vspace="0" style="left: 0pt; position: absolute; top: 0pt;" src="http://googleads.g.doubleclick.net/pagead/ads?client=ca-pub-0321943928525350&output=html&h=90&slotname=2783893649&w=728&lmt=1273708979&flash=10.0.45&url=http%3A%2F%2Fkenshin.katanatechworks.com%2Ftest%2FadsBrowserSide.php&dt=1273708980294&shv=r20100422&correlator=1273708980298&frm=0&ga_vid=695691836.1273708981&ga_sid=1273708981&ga_hid=1961182006&ga_fc=0&u_tz=480&u_his=2&u_java=1&u_h=1080&u_w=1920&u_ah=1052&u_aw=1920&u_cd=24&u_nplug=5&u_nmime=38&biw=1394&bih=324&fu=0&ifi=1&dtd=955&xpc=Jl67G4xiq6&p=http%3A//kenshin.katanatechworks.com" name="google_ads_frame" marginwidth="0" marginheight="0" id="google_ads_frame1" hspace="0" allowtransparency="true">
</iframe>
</ins>
</ins>
<!-- Created by adsense tag, need these to be under tnDiv1 -->
</body>
© Stack Overflow or respective owner