利用js的闭包原理做对象封装及调用方法

创建一个js文件,名为testClosure.js:

?

1

2

3

4

5

6

7

8

9

(function () {

  function a()

  {

    alert('i am a');

  }

  outFunc = function () {

    a();

  }

})();

这里不论写多少个function,a b c d ...外面都调用不到,包括这里面var定义的变量也都调用不到,那么你在里面尽情的写,就不用担心这些函数名变量名跟外界冲突;

只需要暴露一个outFunc这个函数供外界调用。这个函数呢没有用var定义,就变成一个全局变量,外界就可以调用的到,利用这一点,让这个函数变成匿名函数和外界沟通的桥梁。

再利用js面向对象的方法,就可以封装出非常好用的组件。

示例一:不需要继承的js组件

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237

238

239

240

241

242

243

244

245

246

247

248

249

250

251

252

253

254

255

256

257

258

259

260

261

262

263

264

265

266

267

268

269

270

271

272

273

274

275

276

277

278

279

280

281

282

283

284

285

286

287

288

289

290

291

292

293

294

295

296

297

298

299

300

301

302

303

304

305

306

307

308

309

310

311

312

313

314

315

316

317

318

319

320

321

322

323

324

325

326

327

328

329

330

331

332

333

334

335

336

337

338

339

340

341

342

343

344

345

346

347

348

349

350

351

352

353

354

355

356

357

358

359

360

361

362

363

364

365

366

367

368

369

370

371

372

373

374

375

376

377

378

379

380

381

382

383

384

385

386

387

388

389

390

391

392

393

394

395

396

397

398

399

400

401

402

403

404

405

406

407

408

409

410

411

412

413

414

415

416

417

418

419

420

421

422

423

424

425

426

427

428

429

430

431

432

433

434

435

(function()

{

  var arrAuthItem = new Array();

  var isInited = false;

  var syncTableObj=findObj("sync-table-id",document);

 

  var newTR=null;

 var checkBox=null;

 var authTable = null;

 var selfPicUrl=null;

 var selfItem=null;

 

 var isAuthItemEnabled=false;

  var isSelfItemEnabled=false;

 

  function getAuthShopCurrent()

  {

   return $("#"+globalSyncVars.serverComClientId.AuthShopListId).val();

  }

 

  function getSyncFieldCurrent()

  {

   return $("#"+globalSyncVars.serverComClientId.SyncFieldListId).val();

  }

   

  function setTitle()

  {

   $("#sync-table-title-id").html("从“"+getAuthShopCurrent()+"”同步");

  }

 

  function getNumIidFrom(numIidTo)

  {

     var curRowData = jQuery("#listItemDefine").jqGrid('getRowData', numIidTo);

     return curRowData.NumIidFrom;

  }

 

  function insertRows()

  {

   deleteAll();

 

   for(var i=0;i<arrAuthItem[getAuthShopCurrent()+getSyncFieldCurrent()+""].length;i++)

   {

   newTR=syncTableObj.insertRow(syncTableObj.rows.length);

   // 0 checkbox

   checkBox=newTR.insertCell(0);

   // 1 auth table

   authTable=newTR.insertCell(1);

   // 2 self picurl

   selfPicUrl=newTR.insertCell(2);

   // 3 self item

   selfItem=newTR.insertCell(3);

 

   isSelfItemEnabled=setterSelfItem(i);

   isAuthItemEnabled=setterAuthItem(i);

    

   if(isAuthItemEnabled&&isSelfItemEnabled)

    setterEnableStatus(true,i);

   else

    setterEnableStatus(false,i);

   }

  }

 

  function setterAuthItem(i)

  {

   var isEnabled=false;

 

   if (!stringToBoolean(arrAuthItem[getAuthShopCurrent()+getSyncFieldCurrent()+""][i]["HasSameItem"]))

 {

  authTable.innerHTML='<table class="inner-table-class inner-table-from-class"><tr><td class="inner-table-td-radio-class"></td><td class="inner-table-td-class main-img-class"></td><td class="inner-table-td-class" style="padding-top:21px;padding-bottom:21px;">此宝贝没有对应的授权宝贝</td><td class="inner-table-td-class sync-img-class"><span class="icon-no-class"/></td></tr></table>';

  return isEnabled;

 }

 

 var arr = arrAuthItem[getAuthShopCurrent()+getSyncFieldCurrent()+""][i]["ListItemFrom"];

 var strHead = '<table class="inner-table-class inner-table-from-class">';

 var strTr = "";

 var isBinded = false;

 

 

 // 如果已经绑定了,标记一下,是否已经授权过也标记

    var numIid = getNumIidFrom(arrAuthItem[getAuthShopCurrent()+getSyncFieldCurrent()+""][i]["NumIidTo"]);

    if(numIid!="none")

    {

      for(var j=0;j<arr.length;j++)

      {

        if(arr[j]["NumIid"]==numIid)

        {

          isBinded=true;

          break;

        }

      }

    }

  

 

 for(var p=0;p<arr.length;p++)

 {

  var isSharedFrom = stringToBoolean(arr[p]["IsFromItemHasShareFrom"]);

  var isSharedTo = stringToBoolean(arr[p]["IsFromItemHasShareTo"]);

  var picUrl='<a href="http://item.taobao.com/item.htm?id=' + arr[p][" rel="external nofollow" NumIid"] + '" target="_blank"><img class="icon" style="padding:0px;width:60px" src="' + arr[p]["PicUrl"] + '_sum.jpg" title="' + arr[p]["Title"] + '" /></a>';

  if(getEnabledStatus(isBinded,!isSharedTo,isSelfItemEnabled))

  isEnabled = true;

  strTr+='<tr><td class="inner-table-td-radio-class">'+getRadioCode(isBinded,!isSharedTo,isSelfItemEnabled,i,arr.length)+'</td><td class="inner-table-td-class main-img-class">'+picUrl+'</td><td class="inner-table-td-class">'+getAuthItemCode(arr[p],isSharedFrom,isSharedTo,i)+'</td><td class="inner-table-td-class sync-img-class">'+getEnabledCode(isBinded,!isSharedTo,isSelfItemEnabled,arr[p],numIid)+'</td></tr>';

 }

 authTable.innerHTML = strHead+strTr+'</table>';

 return isEnabled;

  }

  // 返回auth宝贝详情html代码

  function getAuthItemCode(obj,isSharedFrom,isSharedTo,i)

  {

   var labelStr = "";

   if(isSharedFrom) labelStr = '<span style="color:red;">【源】</span>';

   if(isSharedTo) labelStr = '<span style="color:red;">【受】</span>';

   return '<span style="line-height:20px;" columnName="NumIid">'+labelStr+'ID:' + obj["NumIid"] + '</span>'

       + '<span style="padding-left:14px;" columnName="OuterId">商家编码:' + obj["OuterId"] + '</span>'

       + '<span style="padding-left:14px;color:'+getPriceColor(obj["Price"],i)+'" columnName="Price">价格:' + obj["Price"] + '</span>'

       + '<br><span style="line-height:20px;" columnName="Title">' + obj["Title"] + '</span>';

  }

  // 返回self宝贝详情html代码

  function getSelfItemCode(obj)

  {

   var labelStr = "";

   if(stringToBoolean(obj["IsToItemHasShareFrom"])) labelStr = '<span style="color:red;">【源】</span>';

   if(stringToBoolean(obj["IsToItemHasShareTo"])) labelStr = '<span style="color:red;">【受】</span>';

   return '<span class="sync-table-td-class"><span style="line-height:20px;" columnName="NumIid">'+labelStr+'ID:' + obj["NumIidTo"] + '</span>'

       + '<span style="padding-left:14px;" columnName="OuterId">商家编码:' + obj["OuterIdTo"] + '</span>'

       + '<span style="padding-left:14px;color:black;" columnName="Price">价格:' + obj["PriceTo"] + '</span></span>'

       + '<br><span class="sync-table-td-class" style="line-height:20px;" columnName="Title">' + obj["TitleTo"] + '</span>';

  }

  // 返回绑定关系图标的html代码

  function getEnabledCode(isBinded,isAuthEnabled,isSelfEnabled,obj,numIid)

  {

   if(isBinded)

   {

      // 如果是绑定状态,还要看当前item是否为绑定的item

      // 在这种情况下,判断是否可绑定,不需要用到selfItem

      if(obj["NumIid"]==numIid)

        return '<span class="icon-bind-class"/>';

      else

      {

        if(stringToBoolean(obj["IsFromItemHasShareTo"]))

          return '<span class="icon-no-class"/>';

        else

          return '<span class="icon-ok-class"/>';

      }

   }else

   {

   if(isAuthEnabled&&isSelfEnabled)

    return '<span class="icon-ok-class"/>';

   else

    return '<span class="icon-no-class"/>';

   }

  }

  // 是否可以绑定

  function getEnabledStatus(isBinded,isAuthEnabled,isSelfEnabled)

  {

   if(isBinded) return false;

   if(isAuthEnabled&&isSelfEnabled)

    {

   return true;

    }

   else

    {

   return false;

    }

  }

  // 返回radio的html代码

  /**

  *  isBinded 是否已经绑定

  *  isAuthEnabled auth是否可同步

  *  isSelfEnabled self是否可同步

  *  当前rows的index

  *  当前auth-list的长度(如果是一对一,当然不需要radio)

  */

  function getRadioCode(isBinded,isAuthEnabled,isSelfEnabled,i,length)

  {

   if(isBinded) return "";

    if(length==1) return "";

   if(isAuthEnabled==false||isSelfEnabled==false) return "";

 return '<input type="radio" name="radio'+i+'">';

  }

 

 

  function setterSelfItem(i)

  {

   var isEnabled=true;

   var picUrl='<a href="http://item.taobao.com/item.htm?id=' + arrAuthItem[getAuthShopCurrent()+getSyncFieldCurrent()+" rel="external nofollow" "][i]["NumIidTo"] + '" target="_blank"><img class="icon" style="padding-left:11px;width:60px" src="' + arrAuthItem[getAuthShopCurrent()+getSyncFieldCurrent()+""][i]["PicUrlTo"] + '_sum.jpg" title="' + arrAuthItem[getAuthShopCurrent()+getSyncFieldCurrent()+""][i]["TitleTo"] + '" /></a>';

    

   selfPicUrl.innerHTML = picUrl;

   selfItem.innerHTML = getSelfItemCode(arrAuthItem[getAuthShopCurrent()+getSyncFieldCurrent()+""][i]);

 

   if(stringToBoolean(arrAuthItem[getAuthShopCurrent()+getSyncFieldCurrent()+""][i]["IsToItemHasShareFrom"])) isEnabled = false;

   if(stringToBoolean(arrAuthItem[getAuthShopCurrent()+getSyncFieldCurrent()+""][i]["IsToItemHasShareTo"])) isEnabled = false;

   return isEnabled;

  }

 

  function getPriceColor(price,i)

  {

   if(arrAuthItem[getAuthShopCurrent()+getSyncFieldCurrent()+""][i]["PriceTo"]==undefined) return "black";

   if(price==undefined) return "black";

   return (price==arrAuthItem[getAuthShopCurrent()+getSyncFieldCurrent()+""][i]["PriceTo"])?"black":"red";

  }

 

  function setterEnableStatus(isEnabled,i)

  {

   if(isEnabled)

   checkBox.innerHTML='<input class="enableCheckbox" type="checkbox" checked="checked" index="'+i+'"/>';

   else

   checkBox.innerHTML='<input type="checkbox" disabled="true"/>';

  }

 

  function stringToBoolean(str)

  {

   if (str==undefined) return false;

   switch(str.toLowerCase())

   {

   case "true": case "yes": case "1": return true;

   case "false": case "no": case "0": case null: return false;

   default: return Boolean(str);

   }

  }

 

  function deleteAll()

  {

   for(var i=syncTableObj.rows.length-1;i>2;i--)

   {

   syncTableObj.deleteRow(i);

   }

  }

 

  function selectAll(isSelect)

  {

   if(isSelect)

   {

   $(".enableCheckbox").prop("checked",true);

   }else

   {

   $(".enableCheckbox").prop("checked",false);

   }

  }

 

  function findObj(theObj, theDoc)

 {

 var p, i, foundObj;

 if(!theDoc) theDoc = document;

 if((p = theObj.indexOf("?")) > 0 && parent.frames.length)

 {

  theDoc = parent.frames[theObj.substring(p+1)].document;

  theObj = theObj.substring(0,p);

 }

 if(!(foundObj = theDoc[theObj]) && theDoc.all)

 foundObj = theDoc.all[theObj];

 for (i=0; !foundObj && i < theDoc.forms.length; i++)

  foundObj = theDoc.forms[i][theObj];

 for(i=0; !foundObj && theDoc.layers && i < theDoc.layers.length; i++)

  foundObj = findObj(theObj,theDoc.layers[i].document);

 if(!foundObj && document.getElementById)

  foundObj = document.getElementById(theObj);

 return foundObj;

 }

 

 function refrash()

 {

 deleteAll();

 

 if(!isInited)

  return;

 

 setTitle();

 

 //现在js还没有数据的,去取值

 if(arrAuthItem[getAuthShopCurrent()+getSyncFieldCurrent()+""]==null)

 {

  var urledit="./x.aspx?method=GetAuthItem&rmd="+Math.random();

  $.post(urledit,$("#"+globalSyncVars.serverComClientId.form1).serialize())

  .done(function(myJsonResult) {

       var data = $.evalJSON(myJsonResult);

       ajaxResponseResult(data);

       if (data.IsSuccess) {

         arrAuthItem[getAuthShopCurrent()+getSyncFieldCurrent()+""]=data.rows;

         insertRows();

         $("#sync-table-id").css("display","inline-table");

       }

     })

     .fail(function(data) {

       ajaxResponseResult(data);

     })

     .always(function(myJsonResult) {

     });

 }else

 {

  insertRows();

 }

 }

 

 function checkIsEnabledBind(i)

 {

 if(stringToBoolean(arrAuthItem[getAuthShopCurrent()+getSyncFieldCurrent()+""][i]["IsFromItemHasShareTo"])) return false;

 if(stringToBoolean(arrAuthItem[getAuthShopCurrent()+getSyncFieldCurrent()+""][i]["IsToItemHasShareFrom"])) return false;

 if(stringToBoolean(arrAuthItem[getAuthShopCurrent()+getSyncFieldCurrent()+""][i]["IsToItemHasShareTo"])) return false;

 return true;

 }

 

 function setSyncValueToCom()

 {

 var numIidsSelf="";

 var numIidsAuth="";

 var isBind="";

    var isRadioUnChecked = false;

 

 $(".enableCheckbox:checked").each(function()

 {

  if(checkIsEnabledBind($(this).attr("index")))

  {

        var checkBoxIndex = $(this).attr("index");

        var radioIndex = 0;

        isRadioUnChecked = false;

        // 通过[0]判断radio是否存在

  if($('input:radio[name=radio'+checkBoxIndex+']')[0])

        {

          var isCheckedLabel = false;

          // 检查每个radio选项是否被选择

          $('input:radio[name=radio'+checkBoxIndex+']').each(function()

          {

            if($('input:radio[name=radio'+checkBoxIndex+']')[radioIndex].checked)

            {

              isCheckedLabel = true;

              // 这里是跳出each循环(里层)

              return false;

            }

            radioIndex++;

          });

          if(!isCheckedLabel)

            isRadioUnChecked = true;

          // 如果存在checkbox有选择,但是radio没选择,应该提醒

          // 然后就退出了,没有后续的提交

          if(isRadioUnChecked)

          {

            checkBoxIndex++;

            alert("第"+checkBoxIndex+"个宝贝有多个对应的授权宝贝,应该仔细查看并选择合适的宝贝同步!");

            // 这里跳出循环(外层)

            return false;

          }

        }

 

        var arrAuth = arrAuthItem[getAuthShopCurrent()+getSyncFieldCurrent()+""][checkBoxIndex]["ListItemFrom"]

 

        if(numIidsSelf=="")

  {

   numIidsSelf+=arrAuthItem[getAuthShopCurrent()+getSyncFieldCurrent()+""][checkBoxIndex]["NumIidTo"];

  }else

  {

   numIidsSelf+=","+arrAuthItem[getAuthShopCurrent()+getSyncFieldCurrent()+""][checkBoxIndex]["NumIidTo"];

  }

 

  if(numIidsAuth=="")

  {

   numIidsAuth+=arrAuth[radioIndex]["NumIid"];

  }else

  {

   numIidsAuth+=","+arrAuth[radioIndex]["NumIid"];

  }

  }

 });

 

 isBind=$("#isBind:checked").val()=="on"?"true":"false";

 

 $("#"+globalSyncVars.serverComClientId.HfNumIidsSelf).val(numIidsSelf);

 $("#"+globalSyncVars.serverComClientId.HfNumIidsAuth).val(numIidsAuth);

 $("#"+globalSyncVars.serverComClientId.HfIsBind).val(isBind);

 

    if(isRadioUnChecked) return -1;

    if(numIidsSelf=="") return 0;

    else return 1;

 }

 

 initTable=function()

 {

 refrash();

 isInited=true;

 }

 

 onSelectAllCheckbox=function()

 {

 if($("#selectAllCheckbox:checked").val()=="on")

 {

  selectAll(true);

 }else

 {

  selectAll(false);

 }

 }

 onPreview=function()

 {

 refrash();

 }

 

 onAldsItemSync=function(sender,jqgridObjRefresh)

 {

    var callbackCode = setSyncValueToCom();

 if(callbackCode == 0)

 {

  alert("没有可以同步设置的宝贝!");

  return;

 }else if(callbackCode == -1)

    {

      // 当存在没有选择的radio时

      return;

    }

 var urledit="./x.aspx?method=SaveSyncItem&rmd="+Math.random();

 $.post(urledit,$("#"+globalSyncVars.serverComClientId.form1).serialize())

 .done(function(myJsonResult) {

      var data = $.evalJSON(myJsonResult);

      ajaxResponseResult(data);

 

      if (data.IsSuccess)

      {

        showPrompt(data.PromptMsg);

 

        if(sender)

        {

         $(sender).dialog("close");

         $(sender).dialog("destroy");

        }

        if(jqgridObjRefresh)

        {

         $(jqgridObjRefresh).trigger("reloadGrid");

        }

      }

    })

    .fail(function(data) {

      ajaxResponseResult(data);

    })

    .always(function(myJsonResult) {

    });

 }

})();

示例二:有继承关系的js组件

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237

238

239

240

241

242

243

244

245

246

247

248

249

250

251

252

253

254

255

256

257

258

259

260

261

262

263

264

265

266

267

268

269

270

271

272

273

274

275

276

277

278

279

280

281

282

283

284

285

286

287

288

289

290

291

292

293

294

295

296

297

298

299

300

301

302

303

304

305

306

307

308

309

310

311

312

313

314

315

316

317

318

319

320

321

322

323

324

325

326

327

328

329

330

331

332

333

334

335

336

337

338

339

340

341

342

343

344

345

346

347

348

349

350

351

352

353

354

355

356

357

358

359

360

361

362

363

364

365

366

367

368

369

370

371

372

373

374

375

376

377

378

379

380

381

382

383

384

385

386

387

388

389

390

391

392

393

394

395

396

397

398

399

400

401

402

403

404

405

406

407

408

409

410

411

412

413

414

415

416

417

418

419

420

421

422

423

424

425

426

427

428

429

430

431

432

433

434

435

436

437

438

439

440

441

442

443

444

445

446

447

448

449

450

451

452

453

454

455

456

457

458

459

460

461

462

463

464

465

466

467

468

469

470

471

472

473

474

475

476

477

478

479

480

481

482

483

484

485

486

487

488

489

490

491

492

493

494

495

496

497

498

499

500

501

502

503

504

505

506

507

508

509

510

511

512

513

514

515

516

517

518

519

520

521

522

523

524

525

526

527

528

529

530

531

532

533

534

535

536

537

538

539

540

541

542

543

544

545

546

547

548

549

550

551

552

553

554

555

556

557

558

559

560

561

562

563

564

565

566

567

568

569

570

571

572

573

574

575

576

577

578

579

580

581

582

583

584

585

586

587

588

589

590

591

592

593

594

595

596

597

598

599

600

601

602

603

604

605

606

607

608

609

610

611

612

613

614

615

616

617

618

619

620

621

622

623

624

625

626

627

628

629

630

631

632

633

634

635

636

637

638

639

640

641

642

643

644

645

646

647

648

649

650

651

652

653

654

655

656

657

658

659

660

661

662

663

664

665

666

667

668

669

670

671

672

673

674

675

676

677

678

679

680

681

682

683

684

685

686

687

688

689

690

691

692

693

694

695

696

697

698

699

700

701

702

703

704

705

706

707

708

709

710

711

712

713

714

715

716

717

718

719

720

721

722

723

724

725

726

727

728

729

730

731

732

733

734

735

736

737

738

739

740

741

742

743

744

745

746

747

748

749

750

751

752

753

754

755

756

757

758

759

760

761

762

763

764

765

766

767

768

769

770

771

772

773

774

775

776

777

778

779

780

781

782

783

784

785

786

787

788

789

790

791

792

793

794

795

796

797

798

799

800

801

802

803

804

805

806

807

808

809

810

811

812

813

814

815

816

817

818

819

820

821

822

823

824

825

826

827

828

829

830

831

832

833

834

835

836

837

838

839

840

841

842

843

844

845

846

847

848

849

850

851

852

853

854

855

856

857

858

859

860

861

862

863

864

865

866

867

868

869

870

871

872

873

874

875

876

877

878

879

880

881

882

883

884

885

886

887

888

889

890

891

892

893

894

895

896

897

898

899

900

901

902

903

904

905

906

907

908

909

910

911

912

913

914

915

916

917

918

919

920

921

922

923

924

925

926

927

928

929

930

931

932

933

934

935

936

937

938

939

940

941

942

943

944

(function(){

 //____________________________批量修改的基类_________________________________

 function BatchModify(){}

 //选择了什么id

 BatchModify.prototype.numIids=null;

 BatchModify.prototype.addis=null;

 BatchModify.prototype.oneIid=null;

 BatchModify.prototype.skuIds=null;

 BatchModify.prototype.selectedItemData=null;

 BatchModify.prototype.maxHeightVal=$(window).height()*0.9;

 

 // 完全克隆一个数组

 BatchModify.prototype.cloneArr=function(arr)

 {

 var arrNew = [];

 for(var i=0;i<arr.length;i++)

 {

  arrNew.push(arr[i]);

 }

 return arrNew;

 }

  

 // 通过jqGrid('getGridParam','selarrrow');取值是不可靠的,经常会变动

 // 在设置jqGrid('setSelection',bindedArr[i]);之后取出来的值经常会变化,要么长度变化,要么顺序变化

 BatchModify.prototype.cancelBindedItem=function()

 {

 var tempNumIids=jQuery("#listItemDefine").jqGrid('getGridParam','selarrrow');

 var tempNumIidsClone = this.cloneArr(tempNumIids);

 var isAlert=false;

 for(var i=0;i<bindedArr.length;i++)

 {

  for(var j=0;j<tempNumIidsClone.length;j++)

  {

  if(tempNumIidsClone[j]==bindedArr[i])

  {

   isAlert=true;

   jQuery("#listItemDefine").jqGrid('setSelection',bindedArr[i]);

   break;

  }

  }

 }

 if(isAlert) alert("已经绑定了数据来源的宝贝不能修改宝贝设置,如果需要修改请先点击宝贝最右栏的解绑按钮解绑!");

 }

 

 BatchModify.prototype.setNumIids=function()

 {

 this.numIids=jQuery("#listItemDefine").jqGrid('getGridParam','selarrrow');

 };

 //拼装addi的json串并赋值给addi

 BatchModify.prototype.setAddis=function()

 {

 var _addis="{rows:{";

 

   for(var i=0;i<this.numIids.length;i++)

   {

     _addis+='"'+this.numIids[i]+'":"';

     var tempVal=$("#addiTextId"+this.numIids[i]).val();

     var val=tempVal.replace(/\"/ig,"\'");

     _addis+=val;

     _addis+='"'

 

     if(i!=this.numIids.length-1)

     {

       _addis+=',';

     }

   }

   _addis+="}}";

   this.addis=_addis;

 };

 //(单个)修改页面传进来的一个id

 BatchModify.prototype.setOneIid=function()

 {

 this.oneIid=$("#"+itemEditVars.itemEditClientId.HfNumIid).val();

 };

 //sku的所有已选id(一个字符串)

 BatchModify.prototype.setSkuIds=function()

 {

 this.skuIds=jQuery("#listSkuDefine").jqGrid('getGridParam','selarrrow');

 };

 

 //设置numIids的值到服务器组件

 BatchModify.prototype.setNumIidsToCom=function()

 {

 $("#"+globalVars.serverComClientId.HfItemDefineIdsSelect).val(this.numIids);

 };

 //设置addis的值到服务器组件

 BatchModify.prototype.setAddisToCom=function()

 {

 $("#"+globalVars.serverComClientId.HfAddiStr).val(this.addis);

 };

 //检查是否有勾选宝贝

 BatchModify.prototype.checkIsSelected=function()

 {

   if (this.numIids == "") {

     alert("请选中要批量修改的行!");

     return false;

   }

   return true;

 };

 //批量生成描述

 BatchModify.prototype.batchGenerateDesc=function(alertResult)

 {

 this.setNumIidsToCom();

    var urledit = "x.aspx?method=BatchGenerateDesc&rdm=" + Math.random();

    if (alertResult)

      urledit += "&generateByManual=true";

 

    this.postData(urledit,alertResult);

 };

 //post数据

 BatchModify.prototype.postData=function(urledit,alertResult)

 {

 $.post( urledit, $("#"+globalVars.serverComClientId.formAldsItemDefine1).serialize())

    .done(function(myJsonResult) {

      var data = $.evalJSON(myJsonResult);

      ajaxResponseResult(data);

 

      if (data.IsSuccess) {

        if (!data.rows)

          showPrompt("宝贝描述生成修改成功!");

      }

      if(alertResult && data.ErrMsg && $.trim(data.ErrMsg) != "")

        alert("提醒:\n\n" + data.ErrMsg);

    })

    .fail(function(data) {

      ajaxResponseResult(data);

    })

    .always(function(myJsonResult) {

    });

 };

 

 BatchModify.prototype.removeDialog=function()

 {

 try{ $("#descTempDiv").remove(); } catch(e){}

 }

  

 function myInherits(Child,Parent)

 {

   function F(){}

   F.prototype=Parent.prototype;

   Child.prototype=new F();

   Child.prototype.constructor=Child;

 }

  

 function createobject(proto)

 {

   function F(){}

   F.prototype=proto;

   return new F();

 }

 //_________________________批量修改(附言,确认收货后发消息,好评后发消息)类_________________________________

 function BatchMsgModify(title,tableId,paperId,fieldName,editUrl,containerDivStr)

 {

 BatchModify.call();

 this.title=title;

 this.tableId=tableId;

 this.paperId=paperId;

 this.fieldName=fieldName;

 this.editUrl=editUrl;

 this.containerDivStr=containerDivStr;

 }

 

 myInherits(BatchMsgModify,BatchModify);

 //弹窗

 BatchMsgModify.prototype.popUpDialog=function()

 {

 $(this.containerDivStr).dialog({

  title: this.title,

     closeText: '关闭',

     width: 980,

     maxHeight: $(window).height() * 0.98,

     minHeight: $(window).height() * 0.7,

     modal: true,

     show: { effect: "fade", duration: 300 },

     hide: { effect: "fade", duration: 300 },

     buttons: {

       确定: function() {

         currentInstance.confirmCallback(this);

       },

       关闭: function() {

         $(this).dialog("close");

       }

     }

 });

 };

 //创建表格

 BatchMsgModify.prototype.createTable=function()

 {

 $("#"+this.tableId).jqGrid({

     viewrecords: true, // show the current page, data rang and total records on the toolbar

     datatype: 'local',

     rowNum:100,

     rowList:[100],

     height: "auto",

     pager: "#"+this.paperId,

     colNames:['主图','宝贝','NumIid','Price','OuterId',this.title.indexOf("批量修改")>=0?this.title.substring(4):this.title],

     colModel:[

       {name:'PicUrl', index: 'PicUrl', width: 60, align: "center", sortable: false, formatter: imgFormatter, unformat:imgUnFormat},

       {name:'Title',index:'OuterId', width:430, sortable: true, formatter: itemDescFormatter, unformat:itemDescUnFormat},

       {name:'NumIid',index:'NumIid', width:100, hidden:true, key:true},

       {name:'Price',index:'Price', width:100, hidden:true},

       {name: 'OuterId', index: 'OuterId', width: 100, hidden: true },

       {name: this.fieldName, index: this.fieldName, width: 440, sortable: true, hidden: false, formatter:this.formatter}

     ]

   });

 };

 //把表格填充进数据

 BatchMsgModify.prototype.initTable=function()

 {

 var gridArrayData=[];

   for(var i=0;i<this.numIids.length;i++)

   {

     var curRowData=jQuery("#listItemDefine").jqGrid('getRowData',this.numIids[i]);

 

     var obj=new Object();

     obj["PicUrl"]=curRowData.PicUrl;

     obj["Title"]=curRowData.Title;

     obj["NumIid"]=curRowData.NumIid;

     obj["Price"]=curRowData.Price;

     obj["OuterId"]=curRowData.OuterId;

     obj[this.fieldName]=curRowData[this.fieldName];

     gridArrayData.push(obj);

   }

   $("#"+this.tableId).jqGrid('setGridParam',{data:gridArrayData});

   $("#"+this.tableId).trigger('reloadGrid');

 };

 //格式化字段

 BatchMsgModify.prototype.formatter=function(cellvalue,options,rowdata)

 {

 return "<TextArea id='addiTextId"+rowdata.NumIid+"' style='width:98%;' rows='4'>"+rowdata[currentInstance.fieldName]+"</TextArea>";

 };

 //重写post函数

 BatchMsgModify.prototype.postData=function(urledit,sender)

 {

 $.post( urledit, $("#"+globalVars.serverComClientId.formAldsItemDefine1).serialize())

   .done(function(myJsonResult)

   {

     var data = $.evalJSON(myJsonResult);

     ajaxResponseResult(data);

     if (data.IsSuccess) {

       if (!data.rows)

         showPrompt(currentInstance.title+"成功"+currentInstance.numIids.length+"个!");

       $("#listItemDefine").trigger('reloadGrid');

       setTimeout(function () { $(sender).dialog("close"); }, 0);

       setTimeout(function () { $(sender).dialog("destroy"); }, 1000);

     }

     if(data.ErrMsg && $.trim(data.ErrMsg) != "")

       alert(currentInstance.title+"出错:\n\n" + data.ErrMsg);

   })

   .fail(function(data) {

     ajaxResponseResult(data);

   })

   .always(function(myJsonResult) {

   });

 };

 

 //确认按钮的回调函数

 BatchMsgModify.prototype.confirmCallback=function(sender)

 {

   this.setAddis();

   this.setNumIidsToCom();

   this.setAddisToCom();

   this.postData(this.editUrl+"&rdm=" + Math.random(),sender);

 };

 

 //实例

 

 var batchAddi=null;

 var batchMsgTradeSuccess=null;

 var batchMsgRatedGood=null;

 var currentInstance=null;//指向当前对象,当this指向失效的时候可以使用这个

 

 openBatchMsgDialogType={batchAddi:0,batchMsgTradeSuccess:1,batchMsgRatedGood:2};

 openBatchMsgDialog=function(typeCode)

 {

 

 

 if(typeCode==openBatchMsgDialogType.batchAddi)

 {

  if (batchAddi==null)

  batchAddi=new BatchMsgModify("批量修改附言","tableEditContent","tablePaper","Additional","x.aspx?method=UpdateMsgAdditional","<div id='editBatchDiv'><table id='tableEditContent'></table><div id='tablePaper'></div></div>");

  currentInstance=batchAddi;

  batchAddi.cancelBindedItem();

  batchAddi.setNumIids();

  if(!batchAddi.checkIsSelected())

  return;

      batchAddi.popUpDialog();

      batchAddi.createTable();

      batchAddi.initTable();

 }else if (typeCode==openBatchMsgDialogType.batchMsgTradeSuccess)

 {

  if (batchMsgTradeSuccess==null)

  batchMsgTradeSuccess=new BatchMsgModify("批量修改确认收货后发消息","tableEditMsgTradeSuccessContent","tableMsgTradeSuccessPaper","MsgTradeSuccess","x.aspx?method=UpdateMsgTradeSuccess","<div id='editBatchDiv'><table id='tableEditMsgTradeSuccessContent'></table><div id='tableMsgTradeSuccessPaper'></div></div>");

  currentInstance=batchMsgTradeSuccess;

  batchMsgTradeSuccess.cancelBindedItem();

  batchMsgTradeSuccess.setNumIids();

  if(!batchMsgTradeSuccess.checkIsSelected())

  return;

      batchMsgTradeSuccess.popUpDialog();

      batchMsgTradeSuccess.createTable();

      batchMsgTradeSuccess.initTable();

 }else if (typeCode==openBatchMsgDialogType.batchMsgRatedGood)

 {

  if (batchMsgRatedGood==null)

  batchMsgRatedGood=new BatchMsgModify("批量修改好评后发消息","tableEditMsgRatedGoodContent","tableMsgRatedGoodPaper","MsgRatedGood","x.aspx?method=UpdateMsgRatedGood","<div id='editBatchDiv'><table id='tableEditMsgRatedGoodContent'></table><div id='tableMsgRatedGoodPaper'></div></div>");

  currentInstance=batchMsgRatedGood;

  batchMsgRatedGood.cancelBindedItem();

  batchMsgRatedGood.setNumIids();

  if(!batchMsgRatedGood.checkIsSelected())

  return;

      batchMsgRatedGood.popUpDialog();

      batchMsgRatedGood.createTable();

      batchMsgRatedGood.initTable();

 }

 }

 //_______________________________批量修改宝贝类(弹出单独页面,只要弹窗即可)_________________________________

 function BatchItemModify(){}

 

 myInherits(BatchItemModify,BatchModify);

 //重写

 BatchItemModify.prototype.popUpDialog=function()

 {

 var urledit = "./x.aspx?NumIids="+this.numIids+"&rdm="+Math.random();

    $.get(urledit, {}, function (data, textStatus, object) {

      var str = "<div id='editBatchDiv'>" + object.responseText + "</div>";

      $(str).dialog({

        dialogClass: "untitle",

        closeText: '关闭',

        width: 800,

        height: 400,

        maxHeight: $(window).height() * 0.9,

        modal: true,

        show: { effect: "fade", duration: 300 },

        hide: { effect: "fade", duration: 300 },

        buttons: {

          确定: function() {

            submitAldsItemEditBatch(this, $("#listItemDefine")); //在x.aspx定义

            currentInstance.batchGenerateDesc();

          },

          关闭: function() {

            $( this ).dialog( "close" );

          }

        }

      });

    });

 }

 

 //实例

 var batchItem=null;

 openBatchItemDialog=function()

 {

 if (batchItem==null)

  batchItem=new BatchItemModify();

 currentInstance=batchItem;

 batchItem.cancelBindedItem();

 batchItem.setNumIids();

 if(!batchItem.checkIsSelected())

  return;

 batchItem.popUpDialog();

 }

 //_______________________________批量生成宝贝描述__________________________________________

 function BatchDescModify(){}

 

 myInherits(BatchDescModify,BatchModify);

 

 BatchDescModify.prototype.generating=function()

 {

 if (!confirm("提醒。\n\n是否继续?"))

      return;

    this.batchGenerateDesc(true);

 };

 

 //实例

 var batchDesc=null;

 onBatchDesc=function()

 {

 if(batchDesc==null)

  batchDesc=new BatchDescModify();

 currentInstance=batchDesc;

 batchDesc.setNumIids();

 if(!batchDesc.checkIsSelected())

  return;

 batchDesc.generating();

 }

 //_____________________________________修改模板______________________________________________

 onDescMouldDialog=function()

 {

 var urledit = "./x.aspx?rdm="+Math.random();

    $.get(urledit,{},function(data,textStatus,object){

      var str="<div id='descTempDiv'>"+object.responseText+"</div>";

      $(str).dialog({

        title:'修改描述模板',

        closeText:'关闭',

        width:850,

        maxHeight:$(window).height() * 0.98,

        modal:true,

        show:{effect:"fade",duration:300},

        hide:{effect:"fade",duration:300},

        buttons:{

          确定:function()

          {

            onTempParaChangeHandler(this);

          },

          关闭:function()

          {

            $(this).dialog("close");

          }

        }

      });

     

    });

 }

 //___________________________________批量修改sku_______________________________________

 function BatchSkuModify(){}

 

 myInherits(BatchSkuModify,BatchModify);

 

 BatchSkuModify.prototype.popUpDialog=function()

 {

 var urledit = "./x.aspx?NumIids="+this.oneIid+"&SkuIds="+this.skuIds+"&IsSkuEditBatch=true&rdm="+Math.random();

    $.get(urledit, {}, function (data, textStatus, object) {

      var str = "<div id='descTempDiv'>" + object.responseText + "</div>";

      $(str).dialog({

        dialogClass: "untitle",

        closeText: '关闭',

        width: 800,

        height: 400,

        maxHeight: $(window).height() * 0.9,

        modal: true,

        show: { effect: "fade", duration: 300 },

        hide: { effect: "fade", duration: 300 },

        buttons: {

          确定: function() {

            submitAldsItemEditBatch(this, $("#listSkuDefine")); //在x.aspx定义

          },

          关闭: function() {

            $( this ).dialog( "close" );

          }

        }

      });

    });

 };

 

 BatchSkuModify.prototype.checkIsSelected=function()

 {

   if (this.skuIds == "") {

     alert("请选中要批量修改的SKU!");

     return false;

   }

   return true;

 };

 //实例

 var batchSku=null;

 

 openBatchSkuDialog=function()

 {

 if(batchSku==null)

  batchSku=new BatchSkuModify();

 currentInstance=batchSku;

 batchSku.setOneIid();

 batchSku.setSkuIds();

 batchSku.removeDialog();

 if(!batchSku.checkIsSelected())

  return;

 batchSku.popUpDialog();

 }

 //_______________________________批量修改SKU附言__________________________________________________

 

 function BatchSkuMsgModify(title,tableId,paperId,fieldName,editUrl,containerDivStr)

 {

 BatchModify.call();

 this.title=title;

 this.tableId=tableId;

 this.paperId=paperId;

 this.fieldName=fieldName;

 this.editUrl=editUrl;

 this.containerDivStr=containerDivStr;

 }

 myInherits(BatchSkuMsgModify,BatchModify);

 

 BatchSkuMsgModify.prototype.popUpDialog=function()

 {

 $(this.containerDivStr).dialog({

  title: this.title,

     closeText: '关闭',

     width: 980,

     maxHeight: this.maxHeightVal,

     // height: this.maxHeightVal>750 ? 750 : this.maxHeightVal,

     modal: true,

     show: { effect: "fade", duration: 300 },

     hide: { effect: "fade", duration: 300 },

     buttons: {

       确定: function() {

         currentInstance.confirmCallback(this);

       },

       关闭: function() {

         $(this).dialog("close");

       }

     }

 });

 };

 //重写-创建表格

 BatchSkuMsgModify.prototype.createTable=function()

 {

 $("#"+this.tableId).jqGrid({

     viewrecords: true, // show the current page, data rang and total records on the toolbar

     datatype: 'local',

     rowNum:100,

     rowList:[100],

     height: "auto",

     pager: "#"+this.paperId,

     colNames:['SkuId','属性名',this.title.indexOf("批量修改")>=0?this.title.substring(4):this.title],

     colModel:[

     {name:'SkuId',index:'SkuId', width:400, hidden:true, key:true},

     {name:'PropertiesName',index:'PropertiesName', width:400,sortable:false, editable: false, hiden:false},

     {name: this.fieldName, index: this.fieldName, width: 440, sortable: true, hidden: false, formatter:this.formatter}

     ]

   });

 };

 //把表格填充进数据

 BatchSkuMsgModify.prototype.initTable=function()

 {

 var gridArrayData=[];

   for(var i=0;i<this.skuIds.length;i++)

   {

     var curRowData=jQuery("#listSkuDefine").jqGrid('getRowData',this.skuIds[i]);

 

     var obj=new Object();

     obj["SkuId"]=curRowData.SkuId;

     obj["PropertiesName"]=curRowData.PropertiesName;

     obj[this.fieldName]=curRowData[this.fieldName];

     gridArrayData.push(obj);

   }

 

   $("#"+this.tableId).jqGrid('setGridParam',{data:gridArrayData});

   $("#"+this.tableId).trigger('reloadGrid');

 };

 //重写-格式化字段

 BatchSkuMsgModify.prototype.formatter=function(cellvalue,options,rowdata)

 {

 return "<TextArea id='addiTextId"+rowdata.SkuId+"' style='width:98%;' rows='4'>"+rowdata[currentInstance.fieldName]+"</TextArea>";

 };

 //重写post函数

 BatchSkuMsgModify.prototype.postData=function(urledit,sender)

 {

 $.post( urledit, $("#"+itemEditVars.itemEditClientId.formAldsItemEdit1).serialize())

   .done(function(myJsonResult)

   {

     var data = $.evalJSON(myJsonResult);

     ajaxResponseResult(data);

     if (data.IsSuccess) {

       if (!data.rows)

         showPrompt(currentInstance.title+"成功"+currentInstance.skuIds.length+"个!");

       $("#listSkuDefine").trigger('reloadGrid');

       setTimeout(function () { $(sender).dialog("close"); }, 0);

       setTimeout(function () { $(sender).dialog("destroy"); }, 1000);

     }

     if(data.ErrMsg && $.trim(data.ErrMsg) != "")

       alert(currentInstance.title+"出错:\n\n" + data.ErrMsg);

   })

   .fail(function(data) {

     ajaxResponseResult(data);

   })

   .always(function(myJsonResult) {

   });

 };

 //重写-拼装json

 BatchSkuMsgModify.prototype.setAddis=function()

 {

 var _addis="{rows:{";

 

   for(var i=0;i<this.skuIds.length;i++)

   {

     _addis+='"'+this.skuIds[i]+'":"';

     var tempVal=$("#addiTextId"+this.skuIds[i]).val();

     var val=tempVal.replace(/\"/ig,"\'");

     _addis+=val;

     _addis+='"'

 

     if(i!=this.skuIds.length-1)

     {

       _addis+=',';

     }

   }

   _addis+="}}";

   this.addis=_addis;

 };

 //重写-设置numIids到组件

 BatchSkuMsgModify.prototype.setNumIidsToCom=function()

 {

 $("#"+itemEditVars.itemEditClientId.HfNumIid).val(this.oneIid);

 };

 

 //新增-设置skuids到组件

 BatchSkuMsgModify.prototype.setSkuIdsToCom=function()

 {

 $("#"+itemEditVars.itemEditClientId.HfSkuIds).val(this.skuIds);

 };

 //重写

 BatchSkuMsgModify.prototype.setAddisToCom=function()

 {

 $("#"+itemEditVars.itemEditClientId.HfSkuAddiStr).val(this.addis);

 };

 

 //确认按钮的回调函数

 BatchSkuMsgModify.prototype.confirmCallback=function(sender)

 {

   this.setAddis();

   this.setNumIidsToCom();

   this.setSkuIdsToCom();

   this.setAddisToCom();

   currentInstance.postData(this.editUrl+"&rdm=" + Math.random(),sender);

 };

 //

 BatchSkuMsgModify.prototype.checkIsSelected=function()

 {

   if (this.skuIds == "") {

     alert("请选中要批量修改附言的SKU!");

     return false;

   }

   return true;

 };

  

 //实例

 var batchSkuAddi=null;

 openBatchSkuMsgDialogType={batchSkuAddi:0};

 openBatchSkuMsgDialog=function(typeCode)

 {

 if (typeCode==openBatchSkuMsgDialogType.batchSkuAddi)

 {

  if (batchSkuAddi==null)

  batchSkuAddi=new BatchSkuMsgModify("批量修改SKU附言","tableEditContent","tablePaper","Additional","x.aspx?method=UpdateMsgAdditional","<div id='descTempDiv'><table id='tableEditContent'></table><div id='tablePaper'></div></div>");

  currentInstance=batchSkuAddi;

  batchSkuAddi.removeDialog();

  batchSkuAddi.setOneIid();

  batchSkuAddi.setSkuIds();

  if(!batchSkuAddi.checkIsSelected())

  return;

      batchSkuAddi.popUpDialog();

      batchSkuAddi.createTable();

      batchSkuAddi.initTable();

 }

 }

 //_______________________________生成描述_________________________________________________

 var descBatchModify=null;

 

 batchGenerateDesc=function(descNumIds,alertResult)

 {

 if(descBatchModify==null)

  descBatchModify=new BatchModify();

 descBatchModify.numIids=descNumIds;

 descBatchModify.setNumIidsToCom();

 descBatchModify.batchGenerateDesc(alertResult);

 }

 

 

 //_______________________________同步类(弹出单独页面,只要弹窗即可)_________________________________

 function SyncModify(){}

 

 myInherits(SyncModify,BatchModify);

 //重写

 SyncModify.prototype.popUpDialog=function()

 {

 var urledit="./x.aspx?rdm="+Math.random();

 

 $.post(urledit,{numIids:this.numIids.toString()},function(data,textStatus,object){

  var str = "<div id='descTempDiv'>" + object.responseText + "</div>";

      $(str).dialog({

       title:"同步设置",

        closeText: '关闭',

        width: 1150,

        height: 800,

        maxHeight: $(window).height() * 0.9,

        modal: true,

        show: { effect: "fade", duration: 300 },

        hide: { effect: "fade", duration: 300 },

        buttons: {

          同步: function() {

            onAldsItemSync(this, $("#listItemDefine")); //在x.aspx定义

          },

          取消: function() {

            $( this ).dialog( "close" );

          }

        }

      });

 });

 }

 

 var syncModify=null;

 openSyncDialog=function()

 {

 if(syncModify==null)

  syncModify=new SyncModify();

 currentInstance=syncModify;

 syncModify.setNumIids();

 if(!syncModify.checkIsSelected())

  return;

 syncModify.removeDialog();

 syncModify.popUpDialog();

 }

 //____________________________同步SKU设置(弹出单独页面,只需弹窗)___________________________________

 function SyncSkuModify(){}

 myInherits(SyncSkuModify,BatchModify);

 

 SyncSkuModify.prototype.popUpDialog=function()

 {

 var urledit="./x.aspx?rdm="+Math.random();

 

 $.post(urledit,{numIid:currentInstance.oneIid.toString(),skuIds:currentInstance.skuIds.toString()},function(data,textStatus,object){

  var str = "<div id='descTempDiv'>" + object.responseText + "</div>";

      $(str).dialog({

       title:"同步SKU设置",

        closeText: '关闭',

        width: 1150,

        height: 800,

        maxHeight: $(window).height() * 0.9,

        modal: true,

        show: { effect: "fade", duration: 300 },

        hide: { effect: "fade", duration: 300 },

        buttons: {

          同步: function() {

            onAldsSkuSync(this, $("#listSkuDefine")); //在x.aspx定义

          },

          取消: function() {

            $( this ).dialog( "close" );

          }

        }

      });

 });

 }

 

 SyncSkuModify.prototype.checkIsSelected=function()

 {

   if (this.skuIds == "") {

     alert("请选中要同步设置的SKU!");

     return false;

   }

   return true;

 };

 

 var syncSkuModify=null;

 openSkuSyncDialog=function()

 {

 if($("#"+itemEditVars.itemEditClientId.HfNumIidFrom).val()=="none")

 {

  alert("没有找到已经绑定的宝贝!要同步SKU设置,需要先绑定对应的宝贝,才能同步宝贝下面的SKU!");

  return;

 }

 if(syncSkuModify==null)

  syncSkuModify=new SyncSkuModify();

 currentInstance=syncSkuModify;

 syncSkuModify.setOneIid();

 syncSkuModify.setSkuIds();

 if (!syncSkuModify.checkIsSelected())

  return;

 syncSkuModify.removeDialog();

 syncSkuModify.popUpDialog();

 }

 //__________________________item批量(及单独)解除绑定_________________________________

 function BatchDisBindingItem(){}

 myInherits(BatchDisBindingItem,BatchModify);

 

 // 对非绑定item取消勾选,是为了下一步批量解除绑定

 BatchDisBindingItem.prototype.cancelFreeItem=function()

 {

 var isAlert = false;

 var isBinded = false;

 var tempNumIids = jQuery("#listItemDefine").jqGrid('getGridParam', 'selarrrow');

 var tempNumIidsClone = this.cloneArr(tempNumIids);

 for (var i = 0; i < tempNumIidsClone.length; i++) {

   var numIidTmp = tempNumIidsClone[i];

   var curRowData = jQuery("#listItemDefine").jqGrid('getRowData', numIidTmp);

   if (curRowData.NumIidFrom == "none") {

     isAlert = true;

     jQuery("#listItemDefine").jqGrid('setSelection', numIidTmp);

   }

 }

 if (isAlert)

 {

   alert("未绑定的宝贝不能作解绑的动作!");

   // return true 表示已经alert了

   return true;

 }

 return false;

 }

 BatchDisBindingItem.prototype.popUpDialog=function()

 {

 var showStr='<div id="descTempDiv"><span style="color:red;">注意:您正在批量解除绑定,如果您解除了绑定,今后数据源宝贝设置有更新您的宝贝设置将不会同步更新!</span></div>';

 

    $(showStr).dialog({

      title: "解除绑定",

      closeText: '关闭',

      width: 600,

      height:300,

      maxHeight: $(window).height() * 0.98,

      minHeight: $(window).height() * 0.7,

      modal: true,

      show: { effect: "fade", duration: 300 },

      hide: { effect: "fade", duration: 300 },

      buttons: {

        解绑: function() {

          disBindingItem(currentInstance.numIids,this);

        },

        关闭: function() {

          $(this).dialog("close");

        }

      }

    });

 }

 

 var batchDisBindItemInstance = null;

 batchDisBindingItem=function()

 {

 var isAlerted = false;

 if(batchDisBindItemInstance==null)

  batchDisBindItemInstance=new BatchDisBindingItem();

 currentInstance=batchDisBindItemInstance;

 if(batchDisBindItemInstance.cancelFreeItem())

  isAlerted = true;

 batchDisBindItemInstance.setNumIids();

 

 if(isAlerted)

 {

  if(currentInstance.numIids=="") return;

 }

 

 if(!batchDisBindItemInstance.checkIsSelected())

  return;

 batchDisBindItemInstance.removeDialog();

 batchDisBindItemInstance.popUpDialog();

 }

 disBindingItem=function(myNumIids,sender)

  {

    var urledit = "./x.aspx?method=DisBinding&NumIids="+myNumIids+"&rdm="+Math.random();

    $.get(urledit, {}, function (dataString, status, object) {

      var data = $.evalJSON(dataString);

      ajaxResponseResult(data);

      if(data.IsSuccess==true)

      {

        $(sender).dialog("close");

        $("#listItemDefine").trigger("reloadGrid");

      }

    });

  }

  //____________________________sku批量及单独解除绑定____________________________________________

  function BatchDisBindingSku(){}

  myInherits(BatchDisBindingSku,BatchSkuModify);

 

  BatchDisBindingSku.prototype.cancelFreeItem=function()

  {

   var tempNumIids = jQuery("#listSkuDefine").jqGrid('getGridParam','selarrrow');

 var tempNumIidsClone = this.cloneArr(tempNumIids);

 var isAlert=false;

 var isBinded = false;

 for(var i=0;i<tempNumIidsClone.length;i++)

 {

  isBinded = false;

  for(var j=0;j<bindedSkuArr.length;j++)

  {

  if(tempNumIidsClone[i]==bindedSkuArr[j])

  {

   isBinded = true;

   break;

  }

  }

  if(!isBinded)

  {

  isAlert = true;

  jQuery("#listSkuDefine").jqGrid('setSelection',tempNumIidsClone[i]);

  }

 }

 

 if(isAlert)

 {

  alert("未绑定的SKU不能作解绑的动作!");

  // 返回true表示已经弹出alert了

  return true;

 }

 return false;

  }

 

  BatchDisBindingSku.prototype.popUpDialog=function()

 {

 var showStr='<div id="descTempDiv"><span style="color:red;">注意:您正在批量解除SKU绑定,如果您解除了绑定,今后数据源宝贝设置有更新您的宝贝设置将不会同步更新!</span></div>';

 

    $(showStr).dialog({

      title: "解除绑定",

      closeText: '关闭',

      width: 600,

      height:300,

      maxHeight: $(window).height() * 0.98,

      minHeight: $(window).height() * 0.7,

      modal: true,

      show: { effect: "fade", duration: 300 },

      hide: { effect: "fade", duration: 300 },

      buttons: {

        解绑: function() {

          disBindingSku(currentInstance.oneIid,currentInstance.skuIds,this);

        },

        关闭: function() {

          $(this).dialog("close");

        }

      }

    });

 }

 

 var batchDisBindSkuInstance = null;

 // 批量

 batchDisBindingSku=function()

 {

 var isAlerted = false;

 if(batchDisBindSkuInstance==null)

  batchDisBindSkuInstance=new BatchDisBindingSku();

 currentInstance=batchDisBindSkuInstance;

 if(batchDisBindSkuInstance.cancelFreeItem())

  isAlerted = true;

 batchDisBindSkuInstance.setOneIid();

 batchDisBindSkuInstance.setSkuIds();

 

 // 如果已经弹过一次了,那再次判断是否没有勾选的时候,就不要再弹了

 if(isAlerted)

 {

  if(currentInstance.skuIds == "") return;

 }

 

 if(!batchDisBindSkuInstance.checkIsSelected())

  return;

 batchDisBindSkuInstance.removeDialog();

 batchDisBindSkuInstance.popUpDialog();

 }

  // 单独

  disBindingSku=function(numIid, skuIds, sender) {

    var urledit = "./x.aspx?method=DisBinding&NumIid=" + numIid + "&SkuIds="+skuIds+"&rdm=" + Math.random();

    $.get(urledit, {}, function (dataString, status, object) {

      var data = $.evalJSON(dataString);

      ajaxResponseResult(data);

      if (data.IsSuccess == true) {

        $(sender).dialog("close");

        $("#listSkuDefine").trigger("reloadGrid");

      }

    });

  }

 

})();

以上这篇利用js的闭包原理做对象封装及调用方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/249185.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flask系列06--(中间件)Flask的特殊装饰器 before_request,after_request, errorhandler

一.使用 Flask中的特殊装饰器(中间件)方法常用的有三个 app.before_request # 在请求进入视图函数之前app.after_request # 在请求结束视图函数之后 响应返回客户端之前app.errorhandler(404) # 重定义错误信息before_request def func():passafter_request def func(ret): # …

Flask 中内置的 Session

Flask中的Session非常的奇怪,他会将你的SessionID存放在客户端的Cookie中,使用起来也非常的奇怪 1. Flask 中 session 是需要 secret_key 的 from flask import session app Flask(__name__) app.secret_key "DragonFire" secret_key 实际上是用来加密字符串的,如果…

CSS像素、物理像素、逻辑像素、设备像素比、PPI、Viewport

最近看了很多这方面的文章&#xff0c;能搜到的基本看了个遍&#xff0c;但感觉还是似懂非懂&#xff0c;知道这个东西&#xff0c;很难说出这是个什么东西&#xff0c;先整理一些概念&#xff0c;慢慢消化&#xff0c;以后慢慢探索其中的原因。 1、PX(CSS pixels) 1.1 定义 …

【转】10条你不可不知的css规则

10条你不可不知的css规则 Posted on 2006-12-20 10:33 雨中太阳 阅读(343) 评论(1) 编辑 收藏 &#xff1a;【译】10条你不可不知的css规则正文&#xff1a; Published December 6th, 2004 in CssStaff Tags: No Tags. 原文地址&#xff1a;Ten CSS Tricks You May not Know k…

Python 面向对象【1】

对象 属性 方法面向对象特征&#xff1a;分装 继承 多态【不同对象对同一方法响应不同行动】类定义class xxx:........类对象类对象支持两种操作&#xff1a;属性引用和实例化 属性引用 使用和 Python 中所有的属性引用一样的标准语法&#xff1a;类对象名.属性名 类对象创建…

【前端面试】HTML5+CSS3初级面试1

最近刚好在看前端的面试&#xff0c;把看到的内容总结一下&#xff0c;方便大家一起学习。 1、简单说一下对HTML5CSS3的了解。 HTML5和CSS3不仅是两项新的Web技术标准&#xff0c;而且代表了下一代HTML和CSS技术。其未来的发展前景已经可以预见&#xff0c;那就是HTML5必将被越…

福大软工 · 第八次作业(课堂实战)- 项目UML设计(团队)

1、队伍信息&#xff1a; 队伍名称&#xff1a;彳艮彳亍团队 学号名本次作业博客链接031602219奇豪(队长)https://www.cnblogs.com/S031602219/p/9822576.html041602209毓明http://www.cnblogs.com/mingsonic/p/9820702.html041602204水源http://www.cnblogs.com/littlenorthwe…

【转发】实现yolo3模型训练自己的数据集总结

原文链接&#xff1a;实现yolo3模型训练自己的数据集总结 经过两天的努力&#xff0c;借鉴网上众多博客&#xff0c;在自己电脑上实现了使用yolo3模型训练自己的数据集并进行测试图片。本文主要是我根据下面参考文章一步步实施过程的总结&#xff0c;可能没参考文章中那么详细&…

详解 vue-cli 的打包配置文件代码(带注释)

一、前言 对于webpack基础不好&#xff0c;node指令不通的童鞋。估计对自己搭建Vue、react脚手架是相当头疼的&#xff0c;有种无从下手的感觉。然而&#xff0c;从头看这2块&#xff0c;耗时太长&#xff0c;而且说实话得练才行&#xff0c;不练练手看不明白。那大多数人就采取…

NoClassDefFoundError

技术之路最公平也最残酷的原因是&#xff1a;没有捷径&#xff0c;需要日积月累的积累&#xff0c;以及对技术持久的热情。NoClassDefFoundError这个错误一般就两种情况&#xff1a;1、没有引入相应的jar包2、两个jar包中都有这个class&#xff0c;无法确认是引用的哪一个&…

【记录一下】从0到1 我的python开发之路

请设计实现一个商城系统&#xff0c;商城主要提供两个功能&#xff1a;商品管理、会员管理。商品管理&#xff1a;- 查看商品列表 - 根据关键字搜索指定商品 - 录入商品会员管理&#xff1a;【无需开发&#xff0c;如选择则提示此功能不可用&#xff0c;正在开发中&#xff0c;…

Python10/22--面向对象编程/类与对象/init函数

类&#xff1a; 语法: class关键字 类名# 类名规范 大写开头 驼峰命名法class SHOldboyStudent: # 描述该类对象的特征 school "上海Oldboy" name "矮根" age 68 gender "unknown" # 在定义阶段 # 只要包含该类的py被…

Django Form和ModelForm组件

Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时&#xff0c;都会写一些获取用户输入的标签并且用form标签把它们包起来。 与此同时我们在好多场景下都需要对用户的输入做校验&#xff0c;比如校验用户是否输入&#xff0c;输入的长度和格式等正不正确。如果用户输…

ESLint 规则详解

前端界大神 Nicholas C. Zakas 在 2013 年开发的 ESLint&#xff0c;极大地方便了大家对 Javascript 代码进行代码规范检查。这个工具包含了 200 多条 Javascript 编码规范且运行迅速&#xff0c;是几乎每个前端项目都必备的辅助工具。可是&#xff0c;这么多规则&#xff0c;每…

全文搜索引擎 ElasticSearch 还是 Solr?

原文链接 最近项目组安排了一个任务&#xff0c;项目中用到了全文搜索&#xff0c;基于全文搜索 Solr&#xff0c;但是该 Solr 搜索云项目不稳定&#xff0c;经常查询不出来数据&#xff0c;需要手动全量同步&#xff0c;而且是其他团队在维护&#xff0c;依赖性太强&#xff0…

对局匹配

问题描述小明喜欢在一个围棋网站上找别人在线对弈。这个网站上所有注册用户都有一个积分&#xff0c;代表他的围棋水平。小明发现网站的自动对局系统在匹配对手时&#xff0c;只会将积分差恰好是K的两名用户匹配在一起。如果两人分差小于或大于K&#xff0c;系统都不会将他们匹…

NodeJS作为Web架构中间层的使用

截至2016年12月&#xff0c;中国网民规模已达7.31亿。传统的网站系统是否能够支撑得起如此庞大的且不断增长的用户访问并且为用户提供体验友好的页面&#xff1f; 一、传统的前后端&#xff1a; 二、传统的前后端分离问题&#xff1a; 性能问题&#xff1a; 1、渲染、数据都在…

Springboot项目修改html后不需要重启---springboot项目的热部署

一、spring-boot-devtools 在pom中直接引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional> </dependency> 设置以下两项&#xff08…

Hibernate中session的get方法和load方法的区别

一.发送SQL时机&#xff1a; load方法采用延迟加载&#xff08;lazy懒加载&#xff09;&#xff0c;执行到这行代码的时候&#xff0c;不会发送SQL语句&#xff0c;当真正使用这个对象的数据&#xff08;对象的数据不包括主键&#xff09;的时候才发送SQL语句&#xff1b; get…

Node.js Web 开发框架大全《中间件篇》

这篇文章与大家分享优秀的 Node.js 中间件模块。Node 是一个服务器端 JavaScript 解释器&#xff0c;它将改变服务器应该如何工作的概念。它的目标是帮助程序员构建高度可伸缩的应用程序&#xff0c;编写能够处理数万条同时连接到一个&#xff08;只有一个&#xff09;物理机的…