小编Kup*_*pto的帖子

如何正确迭代getElementsByClassName

我是Javascript初学者.

我正在通过它创建网页window.onload,我必须通过类名(slide)找到一堆元素,并根据某些逻辑将它们重新分配到不同的节点.我有一个函数Distribute(element),它将一个元素作为输入并进行分配.我想做这样的事情(例如这里这里所概述的):

var slides = getElementsByClassName("slide");
for(var i = 0; i < slides.length; i++)
{
   Distribute(slides[i]);
}
Run Code Online (Sandbox Code Playgroud)

然而这对我来说并没有什么魔力,因为getElementsByClassName实际上并没有返回数组,而是a NodeList,这是......

......这是我的推测......

...在函数Distribute内部被更改(在此函数中正在更改DOM树,并且发生某些节点的克隆).For-each循环结构也没有帮助.

变量幻灯片的行为确实是非确定性的,通过每次迭代,它都会大大改变元素的长度和顺序.

在我的情况下迭代NodeList的正确方法是什么?我在考虑填充一些临时阵列,但我不知道该怎么做......

编辑:

我忘了提到的重要事实是,在另一个内部可能有一个幻灯片,这实际上是slides由于用户Alohci我刚刚发现的变量.

我的解决方案是先将每个元素克隆到一个数组中,Distribute()然后逐个传递数组.

html javascript dom

77
推荐指数
6
解决办法
12万
查看次数

在Matlab中更改fprintf()的默认NaN表示

我试图从数据中Matlab的将被其他应用程序可以理解的格式导出......对,我需要改变NaN,Inf-Inf串(即Matlab的打印默认情况下,这样的值)//m,//inf+//Inf-.

一般来说,我知道如何实现这一目标.我在询问如何(以及是否可能)在Matlab中利用一个特定的东西.实际问题位于最后一段.

我尝试过两种方法(代码如下).

  1. 使用sprintf()数据strrep()输出.这是以逐行方式完成的,以节省内存.该解决方案的时间比简单多出近10倍fprintf().优点是它具有低内存开销.
  2. 与选项1相同,但翻译是在整个数据上完成的.此解决方案更快,但容易出现内存不足异常.我对这种方法的问题是我不想不必要地复制数据.

码:

rows = 50000  
cols = 40  
data = rand(rows, cols); % generate random matrix  
data([1 3 8]) = NaN; % insert some NaN values  
data([5 6 14]) = Inf; % insert some Inf values  
data([4 2 12]) = -Inf; % insert some -Inf values  

fid = fopen('data.txt', 'w'); …
Run Code Online (Sandbox Code Playgroud)

matlab printf

5
推荐指数
1
解决办法
1178
查看次数

是否可以通过style.display隐藏或复制整个DIV更快?

我正在用html创建一个演示文稿.它应该像MS Office中的powerpoint.它将预览所有幻灯片,并且在窗口上一次显示一张幻灯片.我有一个幻灯片列表,可以通过Javascript与他们一起玩.我可以将它们缩小到预览中.

关于显示的一张幻灯片: 我想知道在一个包装器div中复制所有显示的幻灯片是否更好,并通过设置display属性逐个显示它们.或者,如果将一张幻灯片一次复制到此包装器div中会更好.

为清楚起见......我得到这样的东西

<body>
 <div class="slide">/*slide stuff*/</div>
 <div class="slide">/*slide stuff*/</div>
 <div class="slide">/*slide stuff*/</div>
 <div class="slide">/*slide stuff*/</div>
</body>
Run Code Online (Sandbox Code Playgroud)

我把它转换成这个

<body>
 <div id=preview>
  <div class="slide" id="1">/*slide stuff*/</div>
  <div class="slide" id="2">/*slide stuff*/</div>
  <div class="slide" id="3">/*slide stuff*/</div>
  <div class="slide" id="4">/*slide stuff*/</div>
 </div>
 ...
Run Code Online (Sandbox Code Playgroud)

现在我应该通过更改显示属性来显示它们.所以html继续这样:

...
 <div id="mainwindow">
  <div class="slide" id="p1" display="none">/*slide stuff*/</div>
  <div class="slide" id="p2" display="none">/*slide stuff*/</div>
  <div class="slide" id="p3" display="none">/*slide stuff*/</div>
  <div class="slide" id="p4" display="none">/*slide stuff*/</div>
 </div>
</body>
Run Code Online (Sandbox Code Playgroud)

或者我应该将mainwindowdiv设置为空并在每次幻灯片更改时将幻灯片复制到其中?

...
 <div id="mainwindow">
 </div> …
Run Code Online (Sandbox Code Playgroud)

html javascript

1
推荐指数
1
解决办法
70
查看次数

标签 统计

html ×2

javascript ×2

dom ×1

matlab ×1

printf ×1