實現創建一個新li標簽,內容為"php",并將新創建的li插入到內容為HTML的標簽前。
http://www.xianlaiwan.cn/code/1699
若看不到html框架代碼,想寫個找到內容為HTML的元素節點,并找到他的父節點,再創建標簽插入,這個應該怎樣寫? 我這里的a代表父節點,y代表新創建的節點,把n當成內容是HTML的節點 我這段代碼應該怎樣改?請高手指點~這里應該不用判斷父節點是否是元素節點了吧?
? function insetb(n){
? ? ? if(n.innerHTML=="HTML"){
? ? ? ? ? var a=n.parentNode;
? ? ? ? ? var y=document.createElement("li");
? ? ? ? ? y.innerHTML='PHP';
? ? ? ? ? a.insertBefore(y,n)
? ? ? ? ? } ?
? ? ? }
2016-11-25
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>無標題文檔</title>
</head>
<body>
<ul id="test">
? ? <li>JavaScript</li>
? ? <li>HTML</li>
</ul>?
<p>段落</p>
<h1>標題</h1>
<ul id="test">
? ? <li>JavaScript</li>
? ? <li>HTML</li>
? ? <li>CSS</li>
</ul>?
<script>
? ? window.onload=function(){
? ? ? ? var body=document.body;
? ? ? ? var Obj=body.getElementsByTagName("*");
? ? ? ? for(var i=0,leng=Obj.length;i<leng;i++){
? ? ? ? ? ? if(Obj[i].innerHTML == "HTML"){
? ? ? ? ? ? ? ? var newNode=document.createTextNode("PHP"); ? //添加的文本節點,所以前面沒有列表的符號
? ? ? ? ? ? ? ? Obj[i].parentNode.appendChild(newNode);
? ? ? ? ? ? ? ? break; ?//如果只找第一個HTML,則break;不要這句就是找所有HTML后面添加PHP
? ? ? ? ? ? }
? ? ? ? }
? ? }
</script>
</body>
</html>
2016-11-16
<script type="text/javascript">
? ?function find(node){
? ? ? if(node.children.length!=0){
? ? ? ? var a=node.children;
? ? ? ? for(var i=0;i<a.length;i++){
? ? ? ? ? if(a[i].innerHTML == "HTML"){
? ? ? ? ? ? ? var n=a[i].parentNode;
? ? ? ? ? ? ? var y=document.createElement("li");
? ? ? ? ? y.innerHTML='PHP';
? ? ? ? ? n.insertBefore(y,a[i])
? ? ? ? ? break;
? ? ? ? ? }
? ? ? ? ? find(a[i]);
? ? ? ? }
? ? ? }
? ? }
? ? var body=document.body;
? ? find(body);
</script>?
老友給寫的代碼,保存到這里吧~
2016-11-16
不是很明白你的意思,大概猜的。
如果不知道HTML代碼要找特定的一個元素節點,還不知道id和class。只能從body開始的子節點一個節點一個節點不斷往下找。這樣就需要遞歸。jQuery好像有個簡單的辦法,原生JS只能一層一層往下找,沒找到一個節點,然后判斷,這樣就可以找到了。
不過話說回來,HTML和JavaScript都是前端的,這種情況一般很少出現。
2016-11-16
你沒有聲明n是哪個標簽吧
試下var n = document.getElementByTagName('li');