如何在没有jquery的情况下使用javascript添加html到没有id的元素

时间:2015-11-05 09:24:38

标签: javascript html

我有以下HTML代码:

    <div class="someclass">
        <ul>
           <li><a title="someFile" href="somefolder/somefile.pdf">File Name</a>
           <li><a title="someFile2" href="somefolder/somefile2.pdf">File 2</a>
        </ul>
    </div>

我希望链接成为:

    <li><a title="someFile" href="somefolder/somefile.pdf" target="_blank">File Name</a>
    <li><a title="someFile2" href="somefolder/somefile2.pdf" target="_blank">File 2</a>

这可以用纯javascript完成,没有jquery或其他库吗?

我使用getElementByID使用jquery做了类似的事情,但是这里的元素没有id,它所拥有的只是类&#34; someclass&#34;由于各种原因,我不想改变HTML。我想要做的只是在页面底部插入小javascript,这将在使用以下文件加载文档时执行:

window.onload="myFunction()";

这项任务可以按照我想要的方式完成吗?

5 个答案:

答案 0 :(得分:4)

你只需要写

var matches = document.querySelectorAll('a');
for (var i = 0; i < matches.length; i++) {
    matches[i].setAttribute('target', '_blank');
}

<强> Fiddle

答案 1 :(得分:3)

HashMap

请参阅http://jsfiddle.net/sjmcpherso/krktmghd/了解工作示例

这个答案是IE9 +所以是的,你真的不需要jQuery

答案 2 :(得分:2)

试试这个:

var pageLinks = document.getElementsByTagName("a");
for(var x in pageLinks) {
    pageLinks[x].target = "_blank";
}

答案 3 :(得分:1)

试试这个:

var prnt = document.querySelector('.someclass ul').childNodes;
for(var i=0;i<prnt.length;i++){
    if(prnt[i].nodeType == 1){
       prnt[i].firstChild.setAttribute('target','_blank');        
    }
}

输出:

<div class="someclass">
    <ul>
       <li><a title="someFile" href="somefolder/somefile.pdf" target="_blank">File Name</a>
       <li><a title="someFile2" href="somefolder/somefile2.pdf" target="_blank">File 2</a>
    </ul>
</div>

Working Demo

答案 4 :(得分:-2)

看看这里。

http://www.w3schools.com/js/js_htmldom_nodes.asp

如上所示,这是您只能使用Javascript

var para = document.createElement("p"); //create p element
var node = document.createTextNode("This is new."); //create text element
para.appendChild(node); //append text to p

var element = document.getElementById("div1");
element.appendChild(para); //append p to somewhere in your page