/**
* Created by Administrator on 2017/1/11.
*/
function displayCitatinons() {
if(!document.createElement || !document.createTextNode || !document.getElementsByTagName) return false;
var blockquote = document.getElementsByTagName("blockquote");
for(var i=0;i<blockquote.length;i++){
// 检测一下有没有cite属性 获取他的url
if(!blockquote[i].getAttribute("cite")) continue;
var url = blockquote[i].getAttribute("cite");
// 获取目标节点 即block标签的最后一个元素标签
var blockquoteChildren = blockquote[i].getElementsByTagName("*"); //取得bq块下所有的元素节点
if(blockquoteChildren.length < 1) continue; //如果没返回元素节点数组 立马放弃 继续下次循环
var elem = blockquoteChildren[blockquoteChildren.length - 1]; //现在获取了bq块下的最后一个子元素节点
// 开始创建a标签
var link = document.createElement("a");
var link_text = document.createTextNode("source");
link.appendChild(link_text);
link.setAttribute("href",url);
// 创建sup标签包裹A标签 并把sup标签连接到目标标签后面
var sup = document.createElement("sup");
sup.appendChild(link);
elem.appendChild(sup);
}
}
需要注意的一些事项
1
var blockquoteChildren = blockquote[i].getElementsByTagName("*");
if(blockquoteChildren.length < 1) continue;
var elem = blockquoteChildren[blockquoteChildren.length - 1];
这里不用lastchild 而用比较复杂的筛选的原因是 你不能百分比确保 获取到的一定是元素节点 某些浏览器可能会认为是最后一个文本节点 也就是换行符 所以 获取节点一定要谨慎 去做一些确保的措施