js一次创建多个div,然后等条件满足时将其全部删除。一定要js

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js一次创建多个div,然后等条件满足时将其全部删除。一定要js相关的知识,希望对你有一定的参考价值。

参考技术A <!DOCTYPE html>
<html>

<head>
<title>Page Title</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script>

var arr = [];
onload = function() 
    for (var i = 0; i < 100; i++) 
        var div = document.createElement("div");
        div.innerHTML = i;
        document.body.appendChild(div);
        arr.push(div);
    
    setTimeout(function() 
        for (var i = 0; i < arr.length; i++) 
            arr[i].outerHTML = "";
        
    
    , 3000);

</script>
</head>

<body>
 

</body>

</html>

本回答被提问者和网友采纳
参考技术B <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.js "></script>
<div id="box"></div>
<script>
var html = "";
for(i=0;i<5;i++)
html+= "<div>第"+i+"个div</div>";

$("#box").html("5秒钟后删除"+html);

setTimeout(function()
$("#box").html("");
, 5000)

</script>

看看是你需要的吗

满足某些条件时将值替换为 NaN 或 Inf

【中文标题】满足某些条件时将值替换为 NaN 或 Inf【英文标题】:Replace values with NaN or Inf when certain conditions are met 【发布时间】:2017-05-11 17:34:00 【问题描述】:

我创建了以下三维模型矩阵:

mockup(:,:,1) = ...
    [100, 100, 100; ...
    103, 95, 100; ...
    101, 85, 100; ...
    96, 90, 102; ...
    91, 89, 99; ...
    97, 91, 97; ...
    105, 83, 100];

mockup(:,:,2) = ...
    [50, NaN, NaN; ...
    47, NaN, 40; ...
    45, 60, 45; ...
    47, 65, 45; ...
    51, 70, 45; ...
    54, 65, 50; ...
    62, 80, 55];

我还定义了percentTickerAvailable = 0.5

因此,这些列代表三种不同资产的股票价格。为了进一步处理,我需要按以下方式操作 NaN 值。

    如果任何给定 ROW 中 NaN 的百分比大于 1 - percentTickerAvailable,则将这些特定行中的所有值替换为 NaN。也就是说,如果没有足够的资产在该特定行中具有价格,则完全忽略该行。 如果任何给定 ROW 中 NaN 的百分比小于或等于 1 - percentTickerAvailable,请将相应的 NaN 替换为 -inf

为了清楚起见,“任何给定 ROW 中 NaN 的百分比”计算如下: 任何给定 ROW 中的 NaN 数除以列数。

调整后的模型矩阵应如下所示:

mockupAdj(:,:,1) = ...
    [100, 100, 100; ...
    103, 95, 100; ...
    101, 85, 100; ...
    96, 90, 102; ...
    91, 89, 99; ...
    97, 91, 97; ...
    105, 83, 100];

mockupAdj(:,:,2) = ...
    [NaN, NaN, NaN; ...
    47, -inf, 40; ...
    45, 60, 45; ...
    47, 65, 45; ...
    51, 70, 45; ...
    54, 65, 50; ...
    62, 80, 55];

到目前为止,我做了以下工作:

function vout = ranking(vin, percentTickerAvailable)

percentNonNaN = 1 - sum(isnan(vin), 2) / size(vin, 2);
NaNIdx = percentNonNaN < percentTickerAvailable;
infIdx = percentNonNaN > percentTickerAvailable & ...
    percentNonNaN < 1;
[~, ~, numDimVin] = size(vin);

for i = 1 : numDimVin
    vin(NaNIdx(:,:,i) == 1, :, i) = NaN;
end

about = vin;

end % EoF

通过调用mockupAdj = ranking(mockup, 0.5),这已经将mockup(1,:,2)中的第一行正确地转换为'NaN', 'NaN', 'NaN'。但是,我正在努力解决第二点。使用infIdx,我已经成功识别出与第二个条件对应的行。但我不知道如何正确使用该信息以将 mockup(2,2,2) 中的单个 NaN 替换为 -inf

非常感谢任何提示。

【问题讨论】:

【参考方案1】:

这是可以使用矢量化解决的一个很好的例子。我提供了两个版本的代码,一个使用现代语法(包括隐式扩展),另一个用于旧版本的 MATLAB。

注意几点:

NaN 替换阶段,我使用了一个“技巧”,其中0/0 被评估为NaN。 在Inf 替换阶段,我使用逻辑屏蔽/索引来访问vin 中的正确元素。

R2016b 及更新版本:

function vin = ranking (vin, percentTickerAvailable)
  % Find percentage of NaNs on each line:
  pNaN = mean(isnan(vin), 2, 'double');
  % Fills rows with NaNs:
  vin = vin + 0 ./ (1 - ( pNaN >= percentTickerAvailable));
  % Replace the rest with -Inf
  vin(isnan(vin) & pNaN < percentTickerAvailable) = -Inf;
end 

R2016b 之前:

function vin = rankingOld (vin, percentTickerAvailable)
  % Find percentage of NaNs on each line:
  pNaN = mean(isnan(vin), 2, 'double');
  % Fills rows with NaNs:
  vin = bsxfun(@plus, vin, 0 ./ (1 - ( pNaN >= percentTickerAvailable)));
  % Replace the rest with -Inf
  vin(bsxfun(@and, isnan(vin), pNaN < percentTickerAvailable)) = -Inf;
end

【讨论】:

【参考方案2】:

1)

任何给定行中 NaN 的百分比应小于 1

...你说的是比例吗?在这种情况下,这是一个无用的检查,因为它总是如此。还是说百分比?在这种情况下,您的代码不符合您的描述。我的猜测是比率。

2) 根据我的猜测,我有一个后续问题:按照您的描述,mockup(2,2,2) 不应该保持 NaN 吗?该行中有 33% (

3) 根据我认为合乎逻辑的答案,我会更改percentNaN = sum(isnan(vin), 2) / size(vin, 2); 以提高可读性,并相应更改NaNIdx = percentNaN &gt; percentTickerAvailable;。现在只需在循环前面添加一行:

vin(isnan(vin)) = -inf;

为什么?因为像这样你用 -inf 替换所有的 NaN。稍后,符合条件 1 的那些将被循环再次覆盖为 NaN。你不需要 InfIdx。

4) 请注意,您的函数目前无法返回 vout。让它返回 vin,你会没事的。

【讨论】:

【参考方案3】:

你也可以使用逻辑索引来完成这个任务:

x(:,:,1) = ...
    [100, 100, 100; ...
    103, 95, 100; ...
    101, 85, 100; ...
    96, 90, 102; ...
    91, 89, 99; ...
    97, 91, 97; ...
    105, 83, 100];

x(:,:,2) = ...
    [50, NaN, NaN; ...
    47, NaN, 40; ...
    45, 60, 45; ...
    47, 65, 45; ...
    51, 70, 45; ...
    54, 65, 50; ...
    62, 80, 55];

    % We fix the threshold
    tres = 0.5; %fix the threshold.

    % We check if a value = NaN or not.
    in  = isnan(x);
    % Which line have more than 50% of NaN ?.
    ind = (sum(in,2)./(size(x,2)))>0.5
    % We generate an index
    [x1,~,x3] = ind2sub(size(ind),ind);
    % We set the NaN index to 0 if the line contains less than 50 % of NaN.
    in(x1,:,x3) = 0;

    % We calculate the new values.
    x(in) = -inf;
    x(x1,:,x3) = NaN;

【讨论】:

以上是关于js一次创建多个div,然后等条件满足时将其全部删除。一定要js的主要内容,如果未能解决你的问题,请参考以下文章

单击时隐藏和显示 div,带有绝对位置的动画,并在隐藏时将其删除

满足两个条件时将两个指示器警报合并为一个警报

满足某些条件时将值替换为 NaN 或 Inf

如何在创建列表时将列表存储在字典中,然后将其清除然后用于具有不同值的下一个键?

Terraform删除路由表,然后在第二次运行时将其添加(无更改)。错误或我缺少什么吗?

Codeforces Round #524 (Div. 2) C. Masha and two friends