Amp-script 不显示 addEventListener "load" 的结果

问题描述

我想将所有 A 复制到 B。使用普通的 javascript,它按原样工作。但是当我使用 amp-script 时它不起作用。它也没有显示任何错误

A

<div class="harga">111</div>
<div class="harga">222</div>
<div class="harga">333</div>

B

<div class="showHargaProd"></div>
<div class="showHargaProd"></div>
<div class="showHargaProd"></div>

Javascript

<script>
function getAndShow(){
    let sources = document.querySelectorAll('.harga');
    let dests = document.querySelectorAll('.showHargaProd');
    for (let i = 0; i < sources.length; i++){
        if (dests[i]){
            dests[i].innerHTML = sources[i].innerHTML;
            }
        } 
    }
document.addEventListener('DOMContentLoaded',getAndShow);
</script>

这是我所有的代码


<amp-script layout='container' script='inline_amp'>
<div class='container_slide'>
   <div class='prod_price'><b class='showHargaProd'><!--111--></b></div>
   <div class='overlay'>
      <div class='text'><b>BELI</b></div>
   </div>
</div>
<div class='container_slide'>
   <div class='prod_price'><b class='showHargaProd'><!--222--></b></div>
   <div class='overlay'>
      <div class='text'><b>BELI</b></div>
   </div>
</div>
<div class='container_slide'>
   <div class='prod_price'><b class='showHargaProd'><!--333--></b></div>
   <div class='overlay'>
      <div class='text'><b>BELI</b></div>
   </div>
</div>
<p id="hrg1" class="harga">111</p>
<p id="hrg2" class="harga">222</p>
<p id="hrg3" class="harga">333</p>
</amp-script>

<script id="inline_amp" type="text/plain" target="amp-script">
    function getAndShow(){
        let sources = document.querySelectorAll('.harga');
        let dests = document.querySelectorAll('.showHargaProd');
        for (let i = 0; i < sources.length; i++){
            if (dests[i]){
                dests[i].innerHTML = sources[i].innerHTML;
                }
            } 
        }
    document.addEventListener('DOMContentLoaded',getAndShow);
</script>

解决方法

最后我使用时间(秒)来触发 DOM,如下所示:

HTML

<input id='nTrigger' name='nTrigger' type='hidden' value='0'/>
<input id='nCheck' name='nCheck' type='hidden' value=''/> 

JS

var dy = new Date();
var n = dy.getSeconds();
var trig = document.getElementById('nTrigger').value; 
document.getElementById('nCheck').value = n;
if (trig !== n) getAndShow();

这里的 trig 永远不会等于n,因为 seconds 没有零值,它会显示我希望的结果。>

笨蛋,当布局为getAndShow() 固定高度和宽度size必须包括在内)。
我想要的是如何在用户加载页面时加载类responsive ,并成功解决。

这是所有代码:

注意showHargaProd 必须更改为 layout='container'(请参阅与布局系统和手势相关的问题:https://github.com/ampproject/amphtml/issues/28361#issuecomment-628779575)和 How to show popup on AMP page after setTimeout

或者,我们可以使用 layout='responsive' Layout 在容器中正确设置

flex-item

更多<amp-script layout='flex-item' script='inline_amp'> <div class='container_slide'> <div class='prod_price'><b class='showHargaProd'><!--111--></b></div> <div class='overlay'> <div class='text'><b>BELI</b></div> </div> </div> <div class='container_slide'> <div class='prod_price'><b class='showHargaProd'><!--222--></b></div> <div class='overlay'> <div class='text'><b>BELI</b></div> </div> </div> <div class='container_slide'> <div class='prod_price'><b class='showHargaProd'><!--333--></b></div> <div class='overlay'> <div class='text'><b>BELI</b></div> </div> </div> <p id="hrg1" class="harga">111</p> <p id="hrg2" class="harga">222</p> <p id="hrg3" class="harga">333</p> <input id='nTrigger' name='nTrigger' type='hidden' value='0'/> <input id='nCheck' name='nCheck' type='hidden' value=''/> </amp-script> <script id="inline_amp" type="text/plain" target="amp-script"> function getAndShow(){ let sources = document.querySelectorAll('.harga'); let dests = document.querySelectorAll('.showHargaProd'); for (let i = 0; i < sources.length; i++){ if (dests[i]){ dests[i].innerHTML = sources[i].innerHTML; } } } //document.addEventListener('DOMContentLoaded',getAndShow); var dy = new Date(); var n = dy.getSeconds(); var trig = document.getElementById('nTrigger').value; document.getElementById('nCheck').value = n; if (trig !== n) getAndShow(); </script> 事实上,它永远不会等于,因此,它触发了函数(trig !== n)(几乎与getAndShow()).

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...