서브 페이지는 상위 페이지와 같은 매개 변수를 전달 - 배열

프로젝트 버그 동료의 수정이 같은 오류 JS를 표시 요소를 삭제합니다, IE11에서 호환되지 않는 발견 된 참조 주소를 찾을 수 없기 때문에, 결과는, 더 함께 삭제됩니다.

코드를하기 전에

시간 트리거 하위 페이지를 저장 상위 페이지의 콘텐츠의 형태를 찾아

1 개  기능은 저장 () {
 2 VAR productEditPage = $ (parent.document) .contents () 검색 ( "#의 layui 함유층 iframe이"+ parent.layerIndex) [0. ] .contentWindow;
3 VAR의 선택 =의 getAllSelections ();
4  $ (선택) .each (기능 (인덱스, E) - {
 5 productEditPage.productSchemeData.productSchemeBom.push (E);   // 父页面的对象
6  });
7  productEditPage.loadBom ();
8  parent.layerIndex을 삭제;
9 VAR 인덱스 = parent.layer.getFrameIndex (window.name);
10  parent.layer.close (인덱스);
11 }
코드보기

부모 폼의 productSchemeData.productSchemeBom에서 하위 폼 할당 데이터를 제거, 결과는 하위 페이지가 상위 페이지에있는 참조를 해당 참조가도 폐쇄 해당 폐쇄 이후의 정보 요소에 주어졌다

데이터가 삭제되면 내가 더 적절한, 다음 인수의 형태로 생각 통보 찾을 수 없습니다, 인터넷에 글을 많이 찾을 어느 날 아침이 구덩이를 디버깅, 데이터가 깊은 사본을 삭제하기 전에, 그것은 표시되지 않습니다 원래 참조 문제가 존재하지 않는 주소

해결 방법 :

1 개  기능은 저장 () {
 2      VAR productEditPage = $ (parent.document) .contents () 검색 ( "#의 layui 함유층 iframe이"+ parent.layerIndex) [0. ] .contentWindow;
3      VAR의 선택 =의 getAllSelections ();
4      VAR productAdd = 새로운 배열 ();
5      $ (선택) .each (기능 (인덱스, E) - {
 (6)          // productEditPage.productSchemeData.productSchemeBom.push (E), 
7          productAdd.push (E),
 (8)      });
9      productEditPage.loadBom (productAdd);
10      parent.layerIndex을 삭제;
11      VAR 지수 =parent.layer.getFrameIndex (window.name);
12      parent.layer.close (인덱스);
13 }
코드보기

새로 할당 된 하위 페이지의 어레이에서, 상위 페이지에 파라미터로서 전달

VAR productAdd = 새로운 배열 ();
$ (선택) .each (기능 (인덱스, 예) {
productAdd.push (E)
});
productEditPage.loadBom (productAdd);

상위 페이지에있는 그것의 깊은 복사 또는 삭제 관련 작업

1 개  함수 loadBom (productAdd) {
 2      경우 (productAdd = 미정 productAdd = &&!  && productAdd = ""&& productAdd.length> 0! )
 3-      {
 4-          VAR newArray = (배열);
도 5          의 경우 (productSchemeData.productSchemeBom! = null의 && productSchemeData.productSchemeBom.length> 0 )
 6              {
 7              newArray = productSchemeData.productSchemeBom.concat (productAdd); // 数组拼接
8              productSchemeData.productSchemeBom = $ .extend (  [] newArray); // 深拷贝
9              }
 10          
11              {
 12              productSchemeData.productSchemeBom = $ .extend (  [] productAdd); // 深拷贝
13              }
 14      } 
 15 ..................
코드보기

당신은 어떻게 삭제하는 어떤 데이터 딥 카피는, 주어진되지 않습니다.

 

추천

출처www.cnblogs.com/songStar/p/10974386.html