微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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()).

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?