2

我想全部复制AB. 使用纯 javascript,它可以按原样工作。但是当我使用它时它不起作用amp-script。它也没有显示任何错误。

一个

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

<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>
4

1 回答 1

0

最后我使用时间(秒)来触发 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永远,因为秒没有零值,它会显示我希望的结果。

getAndShow()我很愚蠢,当布局responsive 具有固定的高度和宽度(必须包括 尺寸)时,我实际上可以直接使用或调用函数。
我想要的是showHargaProd 当用户加载页面时如何加载类,并且它成功解决了。

以下是所有代码:

注意layout='container'必须更改为layout='responsive'(请参阅与布局系统和手势相关的问题:https ://github.com/ampproject/amphtml/issues/28361#issuecomment-628779575 )和如何在 setTimeout 后在 AMP 页面上显示弹出窗口

或者,我们可以使用flex-itemLayout 在容器中使其正确

<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()(几乎与 相同DOMContentLoaded)。

于 2021-06-23T15:54:13.580 回答