我想知道,JavaScript提供了各种方法来从任何元素中获取第一个子元素,但哪个是最好的?最好的,我的意思是:大多数跨浏览器兼容,最快,最全面和可预测的行为.我用作别名的方法/属性列表:
var elem = document.getElementById('container');
var child = elem.children[0];
var child = elem.firstElementChild; // == children[0]
Run Code Online (Sandbox Code Playgroud)
这适用于两种情况:
var child = elem.childNodes[0]; // or childNodes[1], see below
Run Code Online (Sandbox Code Playgroud)
这是形式或<div>迭代的情况.如果我可能遇到文本元素:
var child = elem.childNodes; // treat as NodeList
var child = elem.firstChild;
Run Code Online (Sandbox Code Playgroud)
据我所知,firstChild使用NodeList childNodes,并firstElementChild使用children.我将这个假设建立在MDN参考上:
childNode是对元素节点的第一个子元素的引用,或者null如果没有元素节点的引用.
我猜测,就速度而言,差异(如果有的话)几乎没有,因为firstElementChild它实际上是一个引用children[0],并且children对象已经在内存中了.
扔我的是childNodes对象.我用它来查看表格元素中的表单.虽然children列出了所有表单元素,但childNodes似乎也包含HTML代码中的空格:
console.log(elem.childNodes[0]);
console.log(elem.firstChild);
Run Code Online (Sandbox Code Playgroud)
两个日志 <TextNode textContent="\n ">
console.log(elem.childNodes[1]);
console.log(elem.children[0]);
console.log(elem.firstElementChild);
Run Code Online (Sandbox Code Playgroud)
所有日志<input type="text" …
我有元素E,我正在添加一些元素.突然之间,我发现下一个元素应该是E的第一个孩子.诀窍是什么,怎么做?方法unshift不起作用,因为E是一个对象,而不是数组.
很长的路要走迭代E的孩子并移动'em键++,但我确信有一个更漂亮的方式.
有没有办法从某个地方获取javascript对象中的元素数量?(即恒定时间复杂度).
我找不到检索该信息的属性或方法.到目前为止,我只能想到在整个集合中进行迭代,但那是线性时间.
很奇怪,没有直接访问对象的大小,你不觉得.
编辑:
我说的是Object对象(一般不是对象):
var obj = new Object ;
Run Code Online (Sandbox Code Playgroud) 我正在寻找一些如何解决我的问题的技巧.
我在表格中有一个html元素(如选择框输入字段).现在我想复制对象并从副本中生成一个新对象,并使用JavaScript或jQuery.我认为这应该以某种方式起作用,但此刻我有点无能为力.
像这样的东西(伪代码):
oldDdl = $("#ddl_1").get();
newDdl = oldDdl;
oldDdl.attr('id', newId);
oldDdl.html();
Run Code Online (Sandbox Code Playgroud) 在过去和大多数我目前的项目中,我倾向于使用这样的for循环:
var elements = document.getElementsByTagName('div');
for (var i=0; i<elements.length; i++) {
doSomething(elements[i]);
}
Run Code Online (Sandbox Code Playgroud)
我听说使用"反向"循环更快但我没有真正的方法来证实这一点:
var elements = document.getElementsByTagName('div'),
length = elements.length;
while(length--) {
doSomething(elements[length]);
}
Run Code Online (Sandbox Code Playgroud)
什么被认为是循环JavaScript中的元素或任何数组的最佳实践?
如果它等于给定的字符串,是否没有简单的方法从数组中删除特定元素?解决方法是找到要删除的数组元素的索引,然后removeAtIndex创建一个新数组,在该数组中追加所有不等于给定字符串的元素.但是没有更快的方法吗?
我的整个身体都有一个带有锚标签的页面,如下所示:
<a id="test" name="Name 1"></a>
<a id="test" name="Name 2"></a>
<a id="test" name="Name 3"></a>
Run Code Online (Sandbox Code Playgroud)
ID始终相同,但名称更改.
例如,我需要填充这些锚标记的名称列表; 名称1,名称2,名称3.这是我到目前为止所处的位置:
document.write(document.getElementById("readme").name);
Run Code Online (Sandbox Code Playgroud)
这会写出第一个锚标记的名称.我需要一种通过Id获取多个元素的方法.
任何帮助是极大的赞赏.
如何删除动物园系列的最后100个元素?
我知道名字[-element]符号,但我不能让它减去一个完整的部分
我有一般的想法,如何在Java中这样做,但我正在学习Python,不知道如何做到这一点.
我需要实现一个函数,该函数返回一个包含列表中每个其他元素的列表,从第一个元素开始.
到目前为止,我已经并且不确定如何从这里开始,因为我只是在学习Python中的for循环是如何不同的:
def altElement(a):
b = []
for i in a:
b.append(a)
print b
Run Code Online (Sandbox Code Playgroud) 如果我在列表中不存在a.remove(x)时调用,如何忽略"not in list"错误消息?xa
这是我的情况:
>>> a = range(10)
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a.remove(10)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: list.remove(x): x not in list
>>> a.remove(9)
Run Code Online (Sandbox Code Playgroud)