2013-03-26 70 views
-1

我正在使用一个web应用程序(Sharepoint),我需要做一些调整。应用程序本身功能非常强大,但有些地区有限制。例如,在这种情况下,我正在尝试为照片创建一个onlick事件。由于局限性,我无法完成这一点。 (如果你知道共享点,你知道维基页面限制)所以,我的目标是实际上在页面上实现JavaScript(支持),它将定位图像,并插入onclick事件。javascript编辑html on the fly

我遇到的问题是,我似乎甚至没有得到一个简单的搜索和替换工作。大多数例子似乎都是指文本节点,但我不熟悉那个术语。

我正在寻找一些指导。谢谢!


(这是不回答,但评论太短) 我试图解决几个问题。这是其中之一。我在一个站点中有一个文档库,并且它嵌入在另一个站点中。当用户单击文档时,它会将文档呈现在文档库的非常小的窗口内。我想要完成的一件事是在网址中添加一个“target = _blank”,以在全新的浏览器窗口中打开。不幸的是,这个文件列表是动态的,所以它必须在飞行中完成。第二个挑战是一个图像,如上所述。在这种情况下,有一个小小的选择器箭头可将数据刷新到另一个Web部件。虽然这有效,但点击图像会更方便。同样,内容是动态的,在这种情况下,我需要从箭头中读取URL,并动态地将图像更改为可点击。这可能超出我的能力,因为我对Web开发实践并不擅长。我更像一个编译器类的人。 ;)我没有任何代码示例提供,因为我所尝试的所有内容都只是概念证明。我会再看看这些建议。谢谢。

+0

这听起来像您已经尝试了几件事。在SO上发布信息时,尽可能具体说明您尝试过的内容以及为什么您认为迄今为止尚未发挥作用。 – 2013-03-27 01:16:18

回答

1

不知道你为什么试图用JavaScript编辑HTML来添加事件处理程序。这通常不是您想要与DOM进行交互以添加事件处理程序的方式。

最简单的事情就是使用jQuery并使用它找到具有适当选择器的元素并添加事件处理程序。我以前在SharePoint项目中使用过这些,没有任何问题。

沿线的某些东西将是一个开始的地方(尽管选择器会导致DOM中所有img标签的点击事件处理程序)。 ('img')。click(function(){/ 你的代码在这里点击时 /});

0

如果你希望避免jQuery的,这样的事情可能工作的伟大:

function search(scope, tagName, attr, query) { 
    tagName = scope.getElementsByTagName(tagName); 
    var size = tagName.length; 
    var results = new Array(); 
    for (var i = 0; i < size; i++) { 
     if (tagName[i].getAttribute(attr) == query) 
      results.push(tagName[i]); 
    } 
    return results; 
}; 

上述功能不取其范围的跨浏览器查询您传递给它。因此,如果我们希望搜索文档中具有'Clickable'作为其类的所有图像,我们可以执行以下操作:

var images = search(document, 'img', 'className', 'Clickable'); 
for (var i = 0; i < images.length; i++) { 
    images[i].onclick = onClickFunction; // onClickFunction being whatever you write. 
}