layer.open 三个弹出层传值问题

问题:
有三个页面,从test_1 打开 test_2 设置test1 图片src成功,从test-2打开test_3 ,在test_3设置test_1 src成功,但是设置test_2的src不成功
问题应该是出在 parent.layui.$('#img11').attr('src',p);,不能给中单打开的页面层传值,那应该怎么设置,请教?

test-3.html

    <h2>这是test-3</h2><br><br>
    <button type="button" class="layui-btn" onclick="gg3()">设置test_2 src</button>
    <br><br><br><br>
    <button type="button" class="layui-btn" onclick="gg31()">设置test_1 src</button>
<script>
function gg3(){ //test_2 设置不成功
  var p = 'danju_img/20230727185343107.jpeg';
  layer.alert(p);
    parent.layui.$('#img11').attr('src',p);
}
function gg31(){//给test_1 设置成功
    var p = 'danju_img/20230727185343107.jpeg'; 
    parent.parent.layui.$('#img1').attr('src',p);
}
</script>

test_2.html

<h2>这是test_2</h2><br><br>
  <button type="button" class="layui-btn" onclick="gg2()">设置test_1图片src</button><br><br>
  <img src="" id="img11"><br><br>
  <button type="button" class="layui-btn" onclick="gg22()">打开test_3</button>
<script>
function gg2(){
  var p = 'danju_img/20230727185343107.jpeg';
  parent.layui.$('#img1').attr('src',p);
}
function gg22(){
        parent.layer.open({
            type: 2,
            title: '<p style="margin-top:10px; line-height:20px; border-left:5px solid #16b777; padding-left:5px;"><b>test_3.php</b></p>',
            area: ['400px','300px'], //宽高
            fix: true, //不固定
            maxmin: false,
            skin:'layerdemo', //自定义css样式 layerdemo
            content: 'test_3.php'
        })
    }
</script>

img

来自GPT的回答:
根据提供的代码,你似乎正在尝试使用parent对象和layui库的layer.open函数在三个HTML页面(test_1.html,test_2.html和test_3.html)之间传递值。

你遇到的问题是,你可以成功地从test_3设置test_1的src属性,但无法从test_3设置test_2的src属性。这是因为parent对象指的是当前文档的直接父文档,而test_2不是test_3的直接父级。

为了解决这个问题,你可以采取以下步骤:

在打开test_3时将test_2的src值传递给test_3。
使用回调函数将这个值从test_3传递回test_2。
以下是修改后的代码:

<h2>这是test_2</h2><br><br>
<button type="button" class="layui-btn" onclick="gg2()">设置test_1图片src</button><br><br>
<img src="" id="img11"><br><br>
<button type="button" class="layui-btn" onclick="gg22()">打开test_3</button>

<script>
function gg2() {
  var p = 'danju_img/20230727185343107.jpeg';
  parent.layui.$('#img1').attr('src', p);
}
function gg22() {
  parent.layer.open({
    type: 2,
    title: '<p style="margin-top:10px; line-height:20px; border-left:5px solid #16b777; padding-left:5px;"><b>test_3.php</b></p>',
    area: ['400px','300px'], //宽高
    fix: true, //不固定
    maxmin: false,
    skin: 'layerdemo', //自定义css样式 layerdemo
    content: 'test_3.php',
    success: function(layero, index) {
      // 在打开test_3时将src值传递给test_3
      var srcValue = parent.layui.$('#img11').attr('src');
      var iframeWin = window[layero.find('iframe')[0]['name']];
      iframeWin.setSrcValueFromParent(srcValue);
    }
  });
}
</script>

html

<h2>这是test-3</h2><br><br>
<button type="button" class="layui-btn" onclick="gg3()">设置test_2 src</button><br><br>
<button type="button" class="layui-btn" onclick="gg31()">设置test_1 src</button>

<script>
function gg3() {
  var p = 'danju_img/20230727185343107.jpeg';
  parent.layui.$('#img11').attr('src', p);
}
function gg31() {
  var p = 'danju_img/20230727185343107.jpeg';
  parent.parent.layui.$('#img1').attr('src', p);
}

function setSrcValueFromParent(value) {
  // 从test_2接收src值
  parent.layui.$('#img11').attr('src', value);
}
</script>

通过这些修改,在打开test_3时,你将test_2的src值传递给test_3,然后test_3可以使用setSrcValueFromParent函数将这个值传递回test_2。这样,你就可以成功地设置test_1和test_2的src属性了。