2012-03-07 17 views
1

我需要将内部div的内容传递给函数,例如myfun(string)。我一直在使用将多个内部子节点传递到函数

myfun((this).children[0].innerHTML)

myfun((this).children[1].innerHTML)

myfun((this).children[0].children[0].innerHTML)

尝试,但这些都不似乎工作。我不能只传递getElementById值,因为该函数应该是通用的,因为它会被各种各样的<a>元素调用(理想情况下,我认为它应该包括这个。关键字)。

enter image description here

感谢您的帮助。

+0

,因为我已经之前说过,不要使用内联JavaScript。没有任何借口,只是不这样做! – Mathletics 2012-03-07 17:33:10

+0

你从哪里挑出'(这个)',我想知道? – 2012-03-07 17:35:31

回答

1

尝试,“这”指的是链接,并且不能使用。

更清洁的解决方案是有MYFUNC知道它会收到包含文本

的JavaScript对象:

myfunc(obj){ 
    alert(obj.childNodes[0].nodeValue); 
} 

HTML

<a href="#" onclick="myfunc(document.getElementByID('target'));return false;">click</a> 
    <div id="target">target contents</div> 
2

如果你不需要它的工作跨浏览器,有:

this.getElementsByClassName('label')[0] 

这将在IE 8 and below失败。

如果你是绝对肯定的HTML/DOM结构不会改变,你也许可以使用:

this.nextSibling.children[0]; 

但是,这可能在浏览器的考虑textNode S作为childNode小号

+0

+1牛肉馅饼 – 2012-03-07 17:36:13

+0

虽然我很感激最后一票,但我没有*想法。但是,地狱,无论如何谢谢你..! =) – 2012-03-07 17:37:25

0

问题尝试 this.parent.children[1].children[0].innerHTML

但是你应该真的使用动态ID而不是这个混乱。

1

对象this将应用于它调用的<a>标签。您需要先调用父div,然后相应地选择这些孩子。

在功能使用this.parent.children[1].children[0].innerHTML