Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 动态地将目标属性添加到已知div元素中预先存在的锚标记集合中_Javascript - Fatal编程技术网

Javascript 动态地将目标属性添加到已知div元素中预先存在的锚标记集合中

Javascript 动态地将目标属性添加到已知div元素中预先存在的锚标记集合中,javascript,Javascript,我有一个id=“images”的div div包含一些图像,每个图像都包装在没有目标属性的锚标记中 我想在我的页面中插入一个脚本,该脚本会提取对这些锚元素的引用,并向它们(在运行时)添加target=“new”属性,以便在单击它们时在新窗口中打开它们 我不想硬编码锚标记上的目标属性。这是部署后的解决方法。我没有在这个应用程序中使用jquery <div id="images"><a href=""><img src="foo.png" /></a>

我有一个id=“images”的div

div包含一些图像,每个图像都包装在没有目标属性的锚标记中

我想在我的页面中插入一个脚本,该脚本会提取对这些锚元素的引用,并向它们(在运行时)添加target=“new”属性,以便在单击它们时在新窗口中打开它们

我不想硬编码锚标记上的目标属性。这是部署后的解决方法。我没有在这个应用程序中使用jquery

<div id="images"><a href=""><img src="foo.png" /></a>...etc </div>
…等等

无需jQuery!您可以使用本机DOM方法轻松做到这一点:

// Find all the anchors you want to modify
var anchors = document.getElementById('images').getElementsByTagName('a'),
    i = anchors.length;

// Add the target to each one
while(i--) anchors[i].target = "new";

可以遍历div中的所有锚元素,首先查找div本身,然后使用以下方法:

var-imagesDiv=document.getElementById('images'),
images=imagesDiv.getElementsByTagName('a');
对于(变量i=0,n=images.length;i
函数替换所有Lanchors(源、stringToFind、stringToReplace){

//示例调用:body=replaceAllAnchors(body,为什么不能使用jQuery?我在这里为其他使用google的人添加了这个。

这是循环中的一行代码:

$('#images a').each(function(){ $(this).attr('target', '_blank'); });

现在不是更简单了吗?如果可以,请使用jQuery。

谢谢Prestaul,这正是我要找的。谢谢CMS,这正是我要找的。Prestaul只差几秒钟就击败了你:)
function replaceAllAnchors(Source,stringToFind,stringToReplace){
    //sample call:  body=replaceAllAnchors(body,'<a ','<a target="_blank" ');  
    var temp = Source;
    var replacedStr="";
    var index = temp.indexOf(stringToFind);
    while(index != -1){
         temp = temp.replace(stringToFind,stringToReplace);
         replacedStr=replacedStr+temp.substr(0,temp.indexOf("/a>")+3);
         temp=temp.substr(temp.indexOf("/a>")+3);            
         index = temp.indexOf(stringToFind);

    }
    replacedStr=replacedStr+temp;
    return replacedStr;

}
$('#images a').each(function(){ $(this).attr('target', '_blank'); });