非常苦恼,在IE下,无法获得非标准Html标签所包含的内容
如
xxxxx
IE下用document.getElementById("t").innerHTML无法获得内容,
这可怎么办呀
请问有什么方法吗
谢谢~
[b]问题补充:[/b]
感谢 jim.jin 的回答,但是现在的问题是,页面中有很多love标签,love标签都没有ID值,但是我现在能得到某一个love标签的js对象,如何里面包含的值呢?
[b]问题补充:[/b]
[size=large][b][color=red]如何通过innerHTML进行赋值呢[/color][/b][/size]
把整个body 的innerHTML 拿过来用正则表达式拿出非标准Html标签所包含的内容
如:
[code="html"]
Regexp demo
<br> var get_not_stand_el_innerHTML = function(id){<br> var all_html = document.body.innerHTML<br> var patrn = new RegExp("\<LOVE\\sid=" + id + "\\>([^\<]+)<\/LOVE\>");<br> var cnt = patrn.exec(all_html);<br> return cnt && cnt[1];<br> };</p> <pre><code> var load_fun = function(){ alert(get_not_stand_el_innerHTML('t')); alert(get_not_stand_el_innerHTML('t2')); alert(get_not_stand_el_innerHTML('t3')); } window.onload = load_fun; </script> </code></pre> <p></head><br><br> <body><br><br> <love id="t">tttt1</love> <br> <love id="t2">ttttttt2</love> <br> </body><br><br> </html>[/code]</p>
给他指定一个新的xmlns
然后就可以当作xml来处理了
在 x:test 节点下面有一个文本节点,文本节点的内容是 abc
在HTML默认的命名空间里,是无法识别自定义节点的
[quote]<?xml version="1.0" encoding="gb2312" standalone="yes"?>
<br><br>
<br><br> function t(){<br><br> var o=document.getElementById('tt');<br><br> alert(o.childNodes[0].nodeValue);<br><br> }<br><br>
abc
/x:test测试
[/quote]
你不要用id取嘛
你先取到love标签嘛
document.getElementsByName("love")
用getElementsByName就OK了,测试代码如下。
[code="java"]
<br> function load(){<br> var love =document.getElementsByName("love").innerHTML="lovetest";<br> alert(love);<br> }<br> window.onload =load();<br>
xxxxx
[/code]
楼上正解,我也想到了这个办法。
aa.innerHTML = what;
[code="java"]<?xml version="1.0" encoding="gb2312" standalone="yes"?>
<br>
<br> function t(){ <br> var o=document.getElementById('tt'); <br> o.innerHTML = "def";<br> } <br>
abc
/x:test测试
[/code]
测试通过
[code="java"]
love El
<p>/**<br> *根据love的Id获取<br> */<br> function getLoveElInnerHtmlById(id){<br><br> var dd = document.body;<br> var html = dd.innerHTML;<br> var new_html = html.replace(/love/ig,"div class='loveElClass' style='display:none; ");<br> document.body.innerHTML = new_html;<br> var result;<br> var loveEl = document.getElementById(id);<br> if(loveEl)<br> result = loveEl.innerHTML;<br> return result;<br><br> } </p> <pre><code>/** *将love转换为隐藏的DIV:之后就是对DIV操作 */ function changeLoveToDiv(){ var dd = document.body; var html = dd.innerHTML; var new_html = html.replace(/love/ig,"div class='loveElClass' style='display:none;'"); document.body.innerHTML = new_html; } window.onload = function(){ //alert(getLoveElInnerHtml('t')); //alert(getLoveElInnerHtml('t2')); //alert(getLoveElInnerHtml('t3')); changeLoveToDiv(); alert("t="+document.getElementById('t').innerHTML); document.getElementById('t').innerHTML = 'test............................' alert("赋值t="+document.getElementById('t').innerHTML); //下面是用jquery进行操作 $("div.loveElClass").each(function(i){ var loveEl = $(this); var id = loveEl.attr('id'); alert('id='+id); alert('html='+loveEl.html()); //赋值 //loveEl.html('要修改的内容'); //alert(loveEl.html()); }); }; </code></pre> <p>
xxxxxxxxx
aaaaa
ddddddddd
dddffffffff
xxxxxx3eeeeeeeeexxxxxx
xxxxxttttttttxxxxxxx
[/code]
可以用document.getElementsByTagName()先取得love标签,再获取属性来取得
选择器不行么 类似jquery的$(".class") 把你的自定义标签添加class的属性。
可以用name 取
document.getElementsByName("love") 试试
将Love编程隐藏的div,然后就可以使用innerHTML取值和赋值了,具体参见我上面的代码:
[code="java"]
...
alert("t="+document.getElementById('t').innerHTML); document.getElementById('t').innerHTML = 'test............................' alert("赋值t="+document.getElementById('t').innerHTML);
...
[/code]
貌似很多方法....呵呵~....楼上的已经实现了~...