我试图做以下
- document.getElementsByTagName("sup").getElementsByTagName("a");
目前我有这个,因为我需要以某种方式返回组合结果Nodelist
- // cant prototype into NodeList because of Firefox
- if (!Object.getElementsByTagName && Object.length)
- {
- Object.prototype.getElementsByTagName = function(name)
- {
- // the only idea I got
- var div = document.createElement("div");
- for (var i=0, len=this.length >>> 0; i<len; i++)
- {
- if (i in this)
- {
- div.appendChild(this[i]); // line 92
- }
- }
- return div.getElementsByTagName(name);
- }
- }
但是,在运行代码(FF 3.5.2)时,我会得到以下异常: 在此之前有一些工作. 通过检查创建的DIV I发现已提到的节点已被复制 有人可以在这方面帮助我吗? HTML样本代码
- <h4>15<sup>th</sup> 24<sup>th</sup> Hesinde<sup><a href="#n1-3">3</a></sup></h4>
# 回答1 我可以防止例外
- div.appendChild(this[i].cloneNode(true));
但这不是我以后需要的nodelist
# 回答2 嗨,多米里奇, 您想将锚点放在其中吗? 我尝试了这个...
- function callJS(){
- var subObj = document.getElementsByTagName('sup');
- for(i=0;i<subObj.length;i++)
- {
- try
- {
- var aObj = subObj[i].getElementsByTagName('a');
- if(aObj.length>0)
- {
- alert("I got the Object at the Index "+i);
- }
- }
- catch(e)
- {}
- }
- }
谢谢并恭祝安康 Ramanan Kalirajan
# 回答3 @ramanankalirajan 是的,我想得到那些锚点(这不是问题),但是我需要它们返回 一个列表 (这是这里的问题). 警报在这里没有用:( 也许在返回数组时也有效(尽管那不一样)
# 回答4 抱歉,但是"一个列表"和一个数组之间有什么区别?
# 回答5 Ramanankalirajan的代码没有返回值(又称一个列表) getElementsBytagName()通常返回节点符. 如果我原型getElementsbythame bytagname中的nodelist界面,我也喜欢它返回节点符(因为那是您所期望的). 如果一切都失败了,它也可以返回数组
# 回答6 可以 名为nodemap 根本可以帮助您?
# 回答7 我认为节日主义者是不变的(请参阅 文章... )...
# 回答9 我尝试了...但它只是无法使用. 我认为您不能一起加入结节型. 我能做的最好的就是创建一个节点
- <html>
- <head>
- </head>
- <body>
- <input type="text" id="text1" name="text1" />
- <input type="text" id="text2" name="text2" />
- <input type="text" id="text3" name="text3" />
-
- <select id="select1" name="select1">
- <option>1</option>
- <option>2</option>
- </select>
- <select id="select2" name="select2">
- <option>1</option>
- <option>2</option>
- </select>
-
- <script type="text/javascript">
-
- var inputs = document.getElementsByTagName('input');
- var selects = document.getElementsByTagName('select');
-
-
- var all = new Array(inputs.length + selects.length);
- var index = 0;
- for (i = 0; i < inputs.length; i++)
- all[index++] = inputs[i];
- for (i = 0; i < selects.length; i++)
- all[index++] = selects[i];
-
-
- </script>
-
- </body>
- </html>
抱歉...也许其他人知道更多:) 我是JavaScript的新手.
# 回答10 @frinavale 为了成为新手,你很好:)
# 回答11 哈哈谢谢宿舍:) 有时我认为JavaScript会爆炸. 我认为,这些天以上的问题中有一半与JavaScript有关(以及Microsoft认为Ajax应该是什么的混乱想法).
# 回答12 @frinavale 这一点是,如果每个人(我的意思是每个人)都坚持这些规格,那么生活就会容易得多.
# 回答13 @Dormilich 有时,它破坏了进步技术的规格. 因此,即使我希望MS遵守规则(因为这会使我的生活变得更轻松),但我认为我们将通过对所有人执行规则来恢复很多东西... 除非我们尝试使用好事,否则我们还应该如何知道是否更改规格(为了推进技术)?
# 回答14 @frinavale 这是开发周期的一部分
# 回答15 好的,既然我们发现我们可以自己创建结节式主义者,我将回到将相关元素放在常见(新)父母中的最初想法,并使用它来适用 getElementsbytagname() . 我基本上需要某种指示,因为原始计划不做E xpected,我可以使用克隆的节点并在文档和父之间移动节点非常不便. 有什么想法在这个方向上吗?