ZBLOG

else if ('0BJECTS' == init.type) { let self = new Fieldset(init.useLang ? lang(init.title) : init.title); let me = this; var vlParent = new VLayout().setVerticalAlign('top'); self.setBody(vlParent); if (window.isOuterOperator !...

在你的代码中,outerBox 是一个新的 DOM 元素,它被设置为 self 的主体部分。因为你将整个 outerBox 作为 self.setBody(outerBox) 的参数,这样会覆盖原来的 vlParent,从而导致 vlParent 不再显示。

要解决这个问题,你可以将 vlParentouterBox 都添加到同一个容器中,而不是让其中一个覆盖另一个。以下是一些可能的修改方案:

修改方案一:使用一个父容器

  1. 创建一个新的容器,比如叫做 container,然后将 vlParentouterBox 添加到这个容器中。
  2. 将这个新创建的容器设置为 self.setBody() 的内容。

示例代码如下:

  1. else if ('0BJECTS' == init.type) {
  2. let self = new Fieldset(init.useLang ? lang(init.title) : init.title);
  3. let me = this;
  4. var vlParent = new VLayout().setVerticalAlign('top');
  5. // 创建外部容器
  6. const container = document.createElement('div');
  7. // 将 vlParent 加入外部容器
  8. container.appendChild(vlParent);
  9. // 如果需要,也可以继续处理 outerOperator...
  10. if (window.isOuterOperator != null && window.isOuterOperator != undefined && window.isOuterOperator == true) {
  11. if (init.code === 'loan') {
  12. if (canl("data clearance:customerinfo:overdue info")) {
  13. config.layout.addMember(self);
  14. } else {
  15. config.layout.addMember(self);
  16. }
  17. }
  18. }
  19. for (var i = 0, N = init.child.length; i < N; i++) {
  20. var initObject = init.child[i];
  21. var vl = this.initlayout(initObject.child, initObject.path, editable);
  22. vl.setCSSProperty("paddingBottom", "5px");
  23. if (N > 0 && i >= 1) {
  24. vl.setCSSProperty("borderTop", "2px solid #E3E3E3");
  25. vl.setCSSProperty("paddingTop", "10px");
  26. }
  27. if (initObject.type === 'OBJECTS_OUT_COLLECTION') {
  28. me.customerOutCollection.layout.addMember(vl);
  29. me.customerOutCollection.count++;
  30. } else {
  31. vlParent.addMember(vl); // 添加到 vlParent
  32. }
  33. }
  34. // 现在创建 outerBox
  35. if (!document.getElementById('outerBox')) {
  36. const outerBox = document.createElement('div');
  37. outerBox.id = 'outerBox';
  38. Object.assign(outerBox.style, {
  39. border: '2px solid #000',
  40. padding: '19px',
  41. borderRadius: '5px',
  42. width: '300px'
  43. });
  44. const tabsContainer = document.createElement('div');
  45. Object.assign(tabsContainer.style, {
  46. display: 'flex',
  47. marginBottom: '19px'
  48. });
  49. const tabs = [
  50. { name: '逾期', content: '逾期内容' },
  51. { name: '未逾期', content: '未逾期内容' }
  52. ];
  53. const contentContainer = document.createElement('div');
  54. Object.assign(contentContainer.style, {
  55. border: '1px solid #000',
  56. padding: '19px'
  57. });
  58. const switchTab = (tab, content) => {
  59. tabsContainer.querySelectorAll('.tab').forEach(t => t.classList.remove('active-tab'));
  60. tab.classList.add('active-tab');
  61. contentContainer.textContent = content;
  62. };
  63. tabs.forEach(({ name, content }) => {
  64. const tab = document.createElement('div');
  65. tab.textContent = name;
  66. tab.classList.add('tab');
  67. tab.addEventListener('click', () => switchTab(tab, content));
  68. tabsContainer.appendChild(tab);
  69. });
  70. switchTab(tabsContainer.querySelector('.tab'), tabs[0].content);
  71. outerBox.appendChild(tabsContainer);
  72. outerBox.appendChild(contentContainer);
  73. // 将 outerBox 添加到外部容器中
  74. container.appendChild(outerBox);
  75. // 将最终的 container 设置为 self 的主体
  76. self.setBody(container);
  77. const style = document.createElement('style');
  78. style.innerHTML = `
  79. .tab {
  80. padding: 10px;
  81. cursor: pointer;
  82. border: 1px solid #000;
  83. margin-right: 5px;
  84. color: #000;
  85. background-color: #fff;
  86. }
  87. .active-tab {
  88. background-color: #000;
  89. color: #fff;
  90. }
  91. `;
  92. document.head.appendChild(style);
  93. }
  94. }

修改方案二:直接添加

另一种方式是在设置主体之前,将两个元素(即 vlParentouterBox)都加入到同一 DOM 树上,但这种方法通常不如第一种清晰,因为可能使得后续维护变得困难。

这两种方法都能确保同时显示两个组件,根据实际情况选择合适的方法。希望这对你有帮助!


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=22374

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?