使用javascript在Div中查找锚点
在javascript中,我有一个对div的引用。在该div中,是一个名为“foundItem”的锚元素 我如何获得对我所引用的Div中名为foundItem的锚的引用使用javascript在Div中查找锚点,javascript,html,find,Javascript,Html,Find,在javascript中,我有一个对div的引用。在该div中,是一个名为“foundItem”的锚元素 我如何获得对我所引用的Div中名为foundItem的锚的引用 页面上的其他div中有'many'foundItem锚定。我需要“this”DIVs one。使用jquery,它非常简单: <script type="text/javascript"> $(function(){ var item = $("#yourDivId a[name=foundItem
页面上的其他div中有'many'foundItem锚定。我需要“this”DIVs one。使用jquery,它非常简单:
<script type="text/javascript">
$(function(){
var item = $("#yourDivId a[name=foundItem]")
)};
</script>
$(函数(){
var item=$(“#yourDivId a[name=foundItem]”)
)};
更新:
根据评论,如果您可以控制如何识别/命名/分类您的锚定标记,那么最好对其应用一个类:
<div id="firstDiv">
<a href="someurl.htm" class="foundItem">test</a>
</div>
<div id="secondDiv">
<a href="someOtherUrl.htm" class="foundItem">test another one</a>
</div>
<!-- and so forth -->
<script type="text/javascript">
$(function(){
var item = $("#firstDiv a.foundItem");
alert(item.html()); // Will result in "test"
var item2 = $("#secondDiv a.foundItem");
alert(item2.html()); // Will show "test another one"
)};
</script>
$(函数(){
var项目=$(“#firstDiv a.foundItem”);
警报(item.html());//将导致“测试”
var item2=$(“#secondDiv a.foundItem”);
警报(item2.html());//将显示“测试另一个”
)};
如果您使用javascript做任何事情,jQuery可以为您节省大量时间,值得投入精力好好学习。从开始介绍可能的内容。使用类似JavaScript的库,节省时间
var theAnchor = $('#divId a[name=foundItem]');
//假设您没有使用jquery或mootools
//假设div是mydiv
var lst=mydiv.getElementsByTagName('a');
var-myanchor;
对于(var i=0;i您可以使用getElementsByTagName方法获取div中的锚元素,然后查找具有正确名称属性的锚元素:
var found = null;
var e = divReference.getElementsByTagName('A');
for (var i=0; i < e.length; i++) {
if (e[i].name && e[i].name == 'foundItem') {
found = e[i];
break;
}
}
不确定这是否有帮助,但需要一个函数来动态处理页面负载并滚动到所选的锚
function scrollToAnchor(anchor_val) {
alert("" + anchor_val);
var page = document.getElementById('tables');
var found = null;
var cnt = 0;
var e = document.getElementsByTagName('a');
for (var i = 0; i < e.length; i++) {
if (e[i].name && e[i].name == anchor_val) {
found = e[i];
break;
}
cnt++;
}
if (found) {
var nPos = found.offsetTop;
alert("" + nPos);
page.scrollBy(0, nPos);
} else {
alert('Failed with call of scrollToAnchor()' + cnt);
}
}
功能滚动至锚定(锚定值){
警报(““+锚定值”);
var page=document.getElementById('tables');
var-found=null;
var-cnt=0;
var e=document.getElementsByTagName('a');
对于(变量i=0;i
因此,如果我将锚点更改为foundItem的id并使用jQuery,我可以使用:var item=$(“#yourDivId a.foundItem”);是吗?是的,或者您可以只使用$('foundItem')
,或者不使用jQuery只使用document.getElementById('foundItem'))
是的,但正如Rob所说,在这一点上,您只需直接通过Id即可。话虽如此,您不需要多个具有相同Id的元素(或名称。如果您可以控制如何处理锚定标记,那么只需对其应用一个类……由于注释语法有限,我将编辑上面的答案。哦-刚刚注意到您在var item=$(“#yourDivId a.foundItem”)中使用了类名称;如果您更改了ID,这将不起作用。您希望var item=$(“#yourDivId a#foundItem”);谢谢ovalsquare,效果很好。我现在正式被jQuery震惊了。哇……这是最好的答案。尽管其他海报都是正确的,jQuery(和其他LIB)让这些任务变得简单,如果作者没有声明,那么假设作者愿意使用jQuery是错误的——特别是当这可能是唯一的脚本需求时。jQuery是一个厨房水槽。如果OP让它听起来像是有强大的脚本需求,那就不一样了,但对于某些事情来说,简单依赖jQuery是懒惰的。
var found = null;
var e = $(divReference).find('a[name=foundItem]');
if (e.length == 1) found = e.get(0);
function scrollToAnchor(anchor_val) {
alert("" + anchor_val);
var page = document.getElementById('tables');
var found = null;
var cnt = 0;
var e = document.getElementsByTagName('a');
for (var i = 0; i < e.length; i++) {
if (e[i].name && e[i].name == anchor_val) {
found = e[i];
break;
}
cnt++;
}
if (found) {
var nPos = found.offsetTop;
alert("" + nPos);
page.scrollBy(0, nPos);
} else {
alert('Failed with call of scrollToAnchor()' + cnt);
}
}