日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2023/12/10 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用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的閉包原理做對象封裝及調用方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

總結

以上是生活随笔為你收集整理的利用js的闭包原理做对象封装及调用方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

亚洲精品视频一二三 | 97精品国自产拍在线观看 | 中文字幕一区二区三区在线观看 | 日本精品中文字幕 | 天天操天天吃 | 97色综合| 免费国产黄线在线观看视频 | 日韩午夜大片 | 激情 婷婷 | 久久天天躁| 在线国产欧美 | 久久久黄视频 | 久久久久久久久久久高潮一区二区 | 一级免费看视频 | 开心激情久久 | 免费高清av在线看 | 丁香综合av | 日韩精品一区二区免费视频 | 人人澡人摸人人添学生av | 超碰在线91 | 麻豆免费在线播放 | 6699私人影院 | 97在线观看视频免费 | 久久久久综合网 | 国产精品视频区 | 欧美另类69 | 狠狠狠色丁香婷婷综合激情 | 在线看小早川怜子av | 欧美亚洲专区 | 天天天射| 国产美女精品视频 | 亚洲国产精品久久 | 国产91精品看黄网站在线观看动漫 | 日韩欧美高清一区二区三区 | 国产69精品久久久久久 | 国产做a爱一级久久 | 精品国产乱码久久久久久1区二区 | 中文字幕免费高清在线 | 中文字幕 国产视频 | 国产在线毛片 | 国产区精品在线观看 | 天天操夜夜操夜夜操 | 欧美日韩一级久久久久久免费看 | 日韩在线观看三区 | 99久久er热在这里只有精品15 | 亚洲一区二区三区毛片 | 手机成人免费视频 | a级片在线播放 | 99在线免费观看视频 | 国产高清黄色 | 中文字幕大全 | 一本一本久久a久久精品综合 | 日本精品久久久久影院 | 一区二区丝袜 | 777视频在线观看 | 精品亚洲欧美无人区乱码 | 成人av电影免费观看 | 操操操人人人 | 国产精品99在线播放 | 久爱综合 | 成人v| 91片网 | 久久久久久久久久久久影院 | 97色在线| 91精品在线播放 | 日韩久久网站 | wwwwwww色 | 成人影视片 | 久草热视频| 久久最新网址 | 欧美亚洲国产日韩 | 欧美日韩1区2区 | 色婷婷激情综合 | 国产精品久久一区二区三区不卡 | 香蕉久久久久久av成人 | 日本久久免费电影 | 在线看欧美 | 国产视频首页 | 操一草| 日韩区欠美精品av视频 | 欧美人体xx | 国产色一区 | 亚洲成人精品 | 国产精品毛片一区二区 | 香蕉网在线 | 久久久精品 一区二区三区 国产99视频在线观看 | 在线播放视频一区 | 8x成人在线| 免费69视频 | 日韩精品一区二区在线 | 青青河边草免费直播 | 国产最新视频在线观看 | 麻豆国产精品永久免费视频 | 毛片网站在线看 | 91热视频在线观看 | 日本中出在线观看 | 69久久夜色精品国产69 | 欧美精品v国产精品v日韩精品 | 丁香综合 | 亚洲永久精品国产 | 亚洲免费永久精品国产 | 91久久久国产精品 | 黄色一集片 | 国产精品久久久久毛片大屁完整版 | av免费福利 | 综合激情婷婷 | 激情喷水 | 国产一级片不卡 | 久久久久精 | 成年人在线观看 | 超碰人人在线 | 欧美成人日韩 | 黄色动态图xx | 精品综合久久久 | 日韩精品在线免费观看 | 国产在线观看污片 | 久久伊人操 | 92精品国产成人观看免费 | 国产综合在线观看视频 | 园产精品久久久久久久7电影 | 久久久综合九色合综国产精品 | 丝袜美腿在线视频 | av成人免费在线观看 | 午夜精品麻豆 | 在线导航av | 人人爽人人爽人人爽 | 欧美激情综合五月色丁香 | 国产123区在线观看 国产精品麻豆91 | 69夜色精品国产69乱 | 精品国产一区二区三区四区vr | 国产一区二区三区视频在线 | 麻豆影视在线免费观看 | 在线一区电影 | 国产xvideos免费视频播放 | 91大神精品视频在线观看 | 国产高清一区二区 | 色综合天天色综合 | 91香蕉视频好色先生 | 成人免费xxx在线观看 | 免费看成年人 | 国产一区二区播放 | 97在线观视频免费观看 | 在线视频日韩 | 天天激情| 天天射射天天 | 日韩视频免费 | 黄色大片入口 | 欧美精品免费在线 | 精品国产一区二区三区蜜臀 | 人人射| 国产九色在线播放九色 | 国产精品久久久久久久久久白浆 | 久久九九国产精品 | 久久国产精品系列 | 正在播放国产精品 | 日本h在线播放 | 久久久免费毛片 | 91在线播放视频 | 亚洲免费成人 | 日韩视频欧美视频 | 狠狠狠狠狠色综合 | 欧美日韩国产一区二 | 免费久久99精品国产 | 波多野结衣在线观看视频 | 手机av资源 | 日韩精品一区二区三区丰满 | 免费日韩av片 | 特黄免费av| 欧美成人xxxxxxxx | 国产伦理剧 | 亚洲在线视频免费观看 | 成人h在线播放 | 国产精品久久久久久模特 | 国产色一区 | 国产精品久久久久婷婷二区次 | 午夜精品久久久久久 | a特级毛片| 国产专区视频在线观看 | 久草香蕉在线视频 | 狠狠网站 | 久草电影免费在线观看 | 精品中文字幕在线观看 | 精品久操| 91香蕉久久 | 在线成人观看 | 久久中文视频 | 国产日韩精品欧美 | 一级欧美日韩 | 久久久久久久影院 | 97超碰人 | 992tv在线观看网站 | 99精品在线免费视频 | 五月天电影免费在线观看一区 | www.夜夜爽| 久久99精品波多结衣一区 | 99精品欧美一区二区蜜桃免费 | 五月婷婷另类国产 | 五月婷婷丁香网 | 精品无人国产偷自产在线 | 狠狠地日| 国产一线在线 | 五月天天色| 免费黄a| 免费在线观看视频一区 | 精品美女在线视频 | 99国内精品久久久久久久 | 国产欧美精品一区二区三区四区 | 国产精品免费视频一区二区 | 一区二区三区不卡在线 | 婷婷综合伊人 | 亚洲综合日韩在线 | 国产黄免费在线观看 | 久久99国产精品久久99 | 中文字幕在线专区 | 国产亚洲视频系列 | 一区二区视频欧美 | 国产一二三四在线视频 | 成人午夜精品福利免费 | 麻豆久久久| 免费观看福利视频 | 在线观看中文字幕dvd播放 | 一级全黄毛片 | 91九色免费视频 | 人人狠狠| 亚洲免费视频在线观看 | 久久精品99国产精品日本 | 97伊人网| 人人看人人爱 | 国产资源免费 | 日韩中字在线观看 | 欧美精品黑人性xxxx | 婷婷爱五月天 | 日韩在线视 | 五月在线视频 | 在线免费观看黄色av | 91成人看片| www免费视频com━ | 在线观看中文av | 天堂av在线网 | 日韩无在线 | 成人一区二区三区在线观看 | 久草精品视频在线看网站免费 | 国产69精品久久久久99尤 | 黄a网站 | 日韩黄色免费电影 | 国产理论影院 | 中国一级片视频 | 久久在线免费观看 | 日韩欧美一区二区三区视频 | 亚洲国产69 | 国产成人av电影在线 | 美女国产在线 | 国产精品1区2区3区 久久免费视频7 | 97在线观看| 亚洲综合激情网 | 久久国产精品99国产 | 日韩欧美一区二区三区免费观看 | 中文字幕一区二区三区四区 | 亚洲精品美女在线观看播放 | 国产三级视频 | 久久久精品久久日韩一区综合 | av在线直接看 | 久久国产欧美日韩精品 | 九九热久久免费视频 | 99久久精品国产观看 | 国产中文字幕视频在线观看 | 在线观看色网 | 九九视频免费在线观看 | 日韩av成人在线观看 | 97超碰超碰久久福利超碰 | 亚洲高清在线视频 | 国产成人精品一区二三区 | 毛片久久久 | 免费男女羞羞的视频网站中文字幕 | 色婷婷狠狠五月综合天色拍 | 最新av网站在线观看 | 成人激情开心网 | 日韩一区二区三区在线看 | 久久99国产精品视频 | 91看片黄色 | 在线久草视频 | 色综合久久精品 | 91亚洲视频在线观看 | 婷婷激情综合网 | 久久99精品久久久久久三级 | 一本到在线 | 丁香高清视频在线看看 | 日日干美女 | 国产日韩欧美在线观看视频 | 337p日本欧洲亚洲大胆裸体艺术 | 美女在线国产 | 亚洲精品国产免费 | 成人免费在线视频 | 免费a级黄色毛片 | 蜜臀av夜夜澡人人爽人人桃色 | 1区2区视频 | 人人舔人人射 | 不卡的av在线播放 | 在线激情影院一区 | 一区二区视频欧美 | 在线亚州| 国产69久久久 | 在线视频黄 | 五月天久久久久久 | 狠狠干狠狠艹 | 91超级碰 | 超碰在线官网 | 亚州激情视频 | 国产精品免费一区二区三区在线观看 | zzijzzij日本成熟少妇 | 狠狠干综合 | 亚洲电影影音先锋 | 夜夜爽天天爽 | 超碰人人舔| 黄色福利视频网站 | 麻豆视频国产在线观看 | 日韩大片在线免费观看 | 久久免费视频播放 | 久久婷婷久久 | 亚洲丝袜一区二区 | 99精品国产在热久久 | 国产色视频一区二区三区qq号 | 亚洲国产成人高清精品 | 日韩精品一卡 | 人人插人人插 | 狠狠操狠狠干2017 | 久久在视频 | 丁香婷婷综合网 | 日韩av影视在线观看 | 日韩视频一区二区三区在线播放免费观看 | 最近中文国产在线视频 | 国产亚洲人成网站在线观看 | 国产裸体永久免费视频网站 | 欧美成人性网 | 亚洲成人资源网 | 国产精品久久久久久五月尺 | 成人av网站在线观看 | 国产精品欧美激情在线观看 | 免费一级片视频 | 国产麻豆精品95视频 | 91久久久久久久一区二区 | 中文字幕在线看视频国产 | 久久久久www | 天堂v中文 | 91视频 - 114av| 爱爱av网站 | 国产一级免费在线观看 | 欧美日韩国产高清视频 | 天天干天天做 | 在线观看免费观看在线91 | 日韩视频一区二区在线 | 精品久久久久免费极品大片 | 五月天婷婷视频 | av一本久道久久波多野结衣 | 久草热视频 | 91久久电影| 亚洲成av人电影 | 成人av影视 | 亚洲国产精品女人久久久 | 中文字幕电影一区 | 亚洲美女精品区人人人人 | 精品专区| 久久久久久久久亚洲精品 | 最近字幕在线观看第一季 | 免费亚洲电影 | 国产精品夜夜夜一区二区三区尤 | 国内精品视频免费 | 色婷婷伊人| 国产黄 | 开心激情网五月天 | 久久av黄色 | 天天av资源| 亚洲 欧洲 国产 精品 | 久久国产a | 国产伦精品一区二区三区… | 国产片网站 | 在线观看韩国av | 偷拍精品一区二区三区 | 久久手机免费视频 | 久久久久久久久影视 | 97成人精品视频在线观看 | 视频一区二区精品 | 色五月色开心色婷婷色丁香 | 一级c片| 超碰在线成人 | 日韩高清国产精品 | 97中文字幕| 久久亚洲在线 | 国产精品99久久久久久有的能看 | 欧美另类网站 | 日韩理论片在线观看 | 成片免费观看视频 | 色是在线视频 | 免费黄色在线网址 | 91激情小视频 | 国产精品伦一区二区三区视频 | 欧美日韩天堂 | 国产精品久久久久久久久久久免费看 | 又黄又爽的免费高潮视频 | 国精产品一二三线999 | 久久免费高清 | 色婷婷狠狠五月综合天色拍 | 国产精品va在线观看入 | 国产亚洲一级高清 | 99re视频在线观看 | 欧美成人xxxx| 天堂素人在线 | 久久久久北条麻妃免费看 | 色综合网在线 | 成人久久久精品国产乱码一区二区 | 免费a网址 | 天天色天天综合网 | 国产精品久久久久久久久久三级 | 久久精品中文字幕少妇 | 国产一卡久久电影永久 | 456免费视频 | 91免费高清视频 | 欧美日韩中文在线观看 | 成人性生交视频 | 99精品国产福利在线观看免费 | 日韩免费在线视频 | 久草网站在线 | 色婷婷伊人 | 色婷婷a| 国产网红在线观看 | 欧美aaa视频 | 精品av网站| www.天天射 | 深爱激情五月综合 | 2019久久精品 | 三级视频日韩 | 人人草人 | 欧美亚洲一区二区在线 | 午夜精品一区二区三区四区 | 日韩三级久久 | 天天射天天射 | 999视频精品 | 亚洲精品久久久久久久不卡四虎 | 国产免费小视频 | 国产精品乱码久久久 | 在线看小早川怜子av | 日本黄色免费看 | 日韩在线色 | 欧美亚洲久久 | 久久精品久久久精品美女 | 色视频网站在线 | 18岁免费看片| 麻豆视频一区二区 | 国产免费观看高清完整版 | 亚洲福利精品 | 91人人人 | 免费a视频| 久久久久久久久久电影 | 欧美福利视频一区 | 欧美最新大片在线看 | 日韩超碰在线 | 丁香网五月天 | 久99久精品视频免费观看 | 国产精品国产三级在线专区 | 在线黄色国产 | 国产玖玖在线 | 免费日韩一区二区三区 | 麻豆91精品视频 | 国产最顶级的黄色片在线免费观看 | 黄色三级免费观看 | 日韩区欠美精品av视频 | 最近中文字幕视频完整版 | 最近中文字幕国语免费高清6 | 黄色影院在线免费观看 | 亚洲精区二区三区四区麻豆 | 天天射天天干 | 夜夜夜影院 | www欧美色 | 99亚洲国产精品 | 国产成人精品一区二 | 中文字幕在线日本 | 色.com| 99久久国产免费,99久久国产免费大片 | 欧美久久久久久久久中文字幕 | 久久免费福利视频 | 中文字幕乱在线伦视频中文字幕乱码在线 | 久久久久久久影院 | 国产91粉嫩白浆在线观看 | 国产麻豆精品传媒av国产下载 | av韩国在线| 久久久99精品免费观看 | 亚洲国产一区av | 欧美在线观看视频一区二区三区 | 中文字幕在线日亚洲9 | 久久久久久久久久免费 | 日韩有色 | 久久精品视频观看 | 亚洲天堂网在线观看视频 | 中文在线√天堂 | 欧美精品国产精品 | av超碰在线 | 欧美射射射 | 91尤物国产尤物福利在线播放 | 色a在线观看 | 国产精品成人av电影 | 在线岛国av| 国产美女在线精品免费观看 | 久久久久免费精品国产 | www.五月婷婷 | 亚洲成人免费在线 | 国产美女免费观看 | 天天爱天天爽 | 成人欧美一区二区三区在线观看 | 日韩特级黄色片 | 久久久国产精品久久久 | 97超碰免费在线观看 | 亚洲永久精品在线观看 | 首页av在线 | 在线看片a| 91在线视频免费播放 | 亚洲区另类春色综合小说校园片 | 久久手机精品视频 | 操久| 精品久久一区二区 | 欧美性另类 | 成人a在线观看高清电影 | 午夜av日韩| 久久久精品一区二区 | 国产一区在线不卡 | 国产精品久久一卡二卡 | 不卡的一区二区三区 | 欧美一进一出抽搐大尺度视频 | 少妇精品久久久一区二区免费 | 国产在线91在线电影 | 九九免费在线观看视频 | 国产精品成人国产乱 | 高清一区二区三区 | 国产精品久久久久久av | 91丨九色丨蝌蚪丨老版 | 在线观看日韩专区 | 亚洲性xxxx| 精品国精品自拍自在线 | 欧美在线久久 | 国产精品2区 | 97视频资源 | 免费看三级 | 在线视频 影院 | 不卡的av在线播放 | 免费日韩电影 | 国产精品中文久久久久久久 | 免费在线观看视频a | 久久久久久亚洲精品 | 久草视频在线播放 | 亚洲最大成人免费网站 | 欧美 日韩 国产 成人 在线 | 91在线免费公开视频 | 中文字幕成人 | 欧美在线aa| 一级欧美黄| 中文字幕乱码电影 | 九九热精品在线 | 亚洲天天摸日日摸天天欢 | 免费合欢视频成人app | 精品一区二区三区在线播放 | 视频在线国产 | 国产中文欧美日韩在线 | 久久久久久久电影 | 在线黄网站 | 正在播放国产91 | 成年人网站免费观看 | 欧美 日韩 视频 | av三级av| 欧美色图亚洲图片 | 国产人成在线视频 | 久久久免费观看 | 国产精品久久久久久久久久妇女 | av丝袜美腿 | 国产视频在线免费 | 国产午夜一区 | 免费网站看v片在线a | 成人手机在线视频 | 亚洲永久精品视频 | 国产精品久久久久永久免费 | 日韩精品在线视频免费观看 | www.伊人网 | 免费一级黄色 | 超碰免费公开 | 久久伊人操| 欧美精品免费在线 | av免费在线播放 | 精品毛片一区二区免费看 | 久久国产免费看 | 91看片在线播放 | 91视频在线免费看 | 国产免费成人av | 国产高清视频在线播放 | 在线午夜av | 国产一区高清在线观看 | 国产午夜在线观看 | 91网站免费观看 | 亚洲高清免费在线 | 久久国产电影院 | 国产在线va| 久久视频国产精品免费视频在线 | 欧美日韩在线观看视频 | 成片视频免费观看 | 亚洲成a人片在线www | 国产欧美精品一区二区三区四区 | 99久久久久久国产精品 | 国产69久久精品成人看 | 亚洲人久久久 | 99国产精品久久久久老师 | 久久精品亚洲综合专区 | 国产青青青| 超碰在线中文字幕 | 亚洲精品在线观看av | 天天色天天射天天干 | 麻豆高清免费国产一区 | 国产精品综合av一区二区国产馆 | av电影在线观看完整版一区二区 | 国产日产欧美在线观看 | 久久国产精品一区二区 | 国产 字幕 制服 中文 在线 | 日韩欧美国产精品 | 在线看一区二区 | 亚洲天堂精品 | 狠狠地日 | 日韩高清av在线 | 国产aa精品| 女人久久久久 | 亚洲狠狠丁香婷婷综合久久久 | 五月婷婷视频 | 手机成人av | 最近中文字幕mv | 日本成人中文字幕在线观看 | 免费黄色a级毛片 | 亚洲h视频在线 | 日日爱夜夜爱 | 国产精品1000 | 色停停五月天 | 精品一二三区视频 | 国产剧情一区在线 | 性色av免费观看 | 国产高清av免费在线观看 | 亚洲婷婷伊人 | 亚洲精品午夜国产va久久成人 | 成人午夜电影在线播放 | 久久视奸 | www视频免费在线观看 | 天天插日日插 | 玖玖在线资源 | 最近更新中文字幕 | 免费在线观看a v | 成年人国产视频 | 日韩av看片 | 天天伊人网 | 成 人 黄 色 片 在线播放 | 精品久久久久久久久久久久久久久久 | 精品久久久久久亚洲综合网 | 中文字幕在线播放第一页 | 国产永久免费高清在线观看视频 | 中文国产成人精品久久一 | 久久国产精品99久久人人澡 | 日韩欧美一区二区不卡 | 日日爽| 夜夜干夜夜 | 久久国产精品99久久久久久丝袜 | 亚洲成色777777在线观看影院 | 东方av在 | 欧美在线视频精品 | 免费看网站在线 | 日韩一区二区久久 | 久久男人视频 | 久久情网 | 色婷婷中文 | 国产日韩中文在线 | 中文在线www | 久久精品爱视频 | 亚洲五月激情 | 国产又粗又长的视频 | 久久99国产一区二区三区 | www.99热精品| 亚洲乱码精品久久久久 | 在线观看视频日韩 | 久久艹艹 | 欧美在线一级片 | 在线精品视频免费播放 | 一区免费观看 | 日韩精品视频久久 | 91桃色在线播放 | 欧美极品少妇xxxx | 久久高清片 | 黄色一级大片在线免费看国产一 | av片免费播放 | 色噜噜噜噜 | 一区二区激情视频 | 亚洲国产一区在线观看 | 久99久在线 | www视频在线播放 | 欧美精品免费在线观看 | 国产一级二级三级在线观看 | 日日干天夜夜 | 天天操天天干天天操天天干 | 亚洲黄色片一级 | 亚洲欧洲久久久 | 亚洲精品国产精品国自产观看 | 91人人澡人人爽人人精品 | 亚洲1区在线 | 国产精品9999久久久久仙踪林 | 在线观看日韩免费视频 | 国产精品99久久99久久久二8 | 天天插狠狠插 | 午夜视频在线观看一区 | 91精品视频在线观看免费 | 精品美女国产在线 | 日日夜夜天天干 | 午夜成人免费影院 | 日本久久91 | 色综合久久88 | 97精品伊人 | 8x8x在线观看视频 | 精品一二三四五区 | 成人全视频免费观看在线看 | 欧美不卡视频在线 | 麻豆成人网 | 亚洲精品视频在线免费 | 黄色小网站免费看 | 久久久国产一区二区三区四区小说 | 成人在线视频论坛 | 亚洲精品免费观看视频 | 正在播放国产精品 | 午夜99| 日本三级人妇 | 国产伦精品一区二区三区无广告 | 久久大视频 | 精品黄色片 | av电影在线免费 | 国产精品成人一区二区三区吃奶 | 天天操天天操天天操天天操天天操天天操 | 综合五月 | 99热在线免费观看 | 国产一级黄色av | 高清av中文字幕 | 国产精品日韩欧美一区二区 | 久久久久久久影院 | 亚洲人精品午夜 | 99免费精品 | 日本中文字幕系列 | 久久a热6 | 色婷婷电影网 | av看片在线| 青草草在线 | 69久久99精品久久久久婷婷 | 麻豆一级视频 | 欧美日韩一区二区视频在线观看 | 天天综合成人 | 亚洲精品美女久久17c | 五月婷婷综合色拍 | 日韩免费一级a毛片在线播放一级 | 精品亚洲免费视频 | 91在线观 | 九九热在线观看 | 久久久久久高潮国产精品视 | 一区二区三区四区五区在线视频 | 正在播放亚洲精品 | 色搞搞 | 欧美精品亚洲精品日韩精品 | 久久久久久福利 | 成人av手机在线 | 一区二区三区日韩精品 | 亚洲国产精品成人av | 亚洲综合视频在线播放 | 国产精品丝袜久久久久久久不卡 | 黄色电影网站在线观看 | 国产精品国产三级国产 | 色就是色综合 | 国产亚洲精品久久久久动 | 久草www | 欧美视频xxx | 91亚洲狠狠婷婷综合久久久 | 色97在线| 香蕉视频4aa | 麻豆传媒一区二区 | 亚洲精品视频免费在线 | 久久人人爽人人爽人人片av免费 | 99精品视频免费在线观看 | 在线天堂v| 懂色av懂色av粉嫩av分享吧 | 在线看片中文字幕 | 81精品国产乱码久久久久久 | 在线成人国产 | 天天弄天天干 | 人人澡人人模 | 黄色网址a | 中文字幕在线播放一区二区 | 四虎国产精品永久在线国在线 | 国产精品视频免费在线观看 | 欧美日韩在线观看一区 | 蜜臀av性久久久久av蜜臀妖精 | 中文字幕乱偷在线 | 天天草天天草 | 国产精品亚洲成人 | 人人操日日干 | 国产在线a免费观看 | 久久手机在线视频 | 日韩精品一区二区在线观看视频 | 亚洲欧美日韩在线看 | 日韩久久久久久久久久久久 | 97超碰中文字幕 | 国产一区二区视频在线 | 五月天中文在线 | 黄色片视频免费 | 五月综合网 | av天天草| 日韩91精品 | 国产高清在线精品 | 久久免费看片 | 99精品一区二区三区 | 日韩在线 一区二区 | 最近免费中文字幕mv在线视频3 | 国产一区自拍视频 | 91精彩视频| 欧美91av| 日本精品视频在线 | 成人午夜剧场在线观看 | 久久艹国产视频 | 中文 一区二区 | 国产成人综合精品 | 97国产在线播放 | 久99久在线| 亚洲综合国产精品 | 亚洲影视资源 | 亚洲视频在线观看网站 | 日韩欧美高清免费 | 亚洲精品国产欧美在线观看 | 国产精品久久久久久模特 | 欧美激情精品久久久 | 免费高清男女打扑克视频 | 正在播放国产一区二区 | 九九九在线观看 | 日批网站免费观看 | 亚洲国产精品va在线看黑人 | 免费人成在线观看网站 | 国产在线理论片 | 天天·日日日干 | 亚洲成人欧美 | 日韩精品一区二区三区免费观看视频 | 韩国av免费在线 | 亚洲精品一区二区三区新线路 | 国产成人精品a | 在线三级中文 | 六月激情久久 | 热久久这里只有精品 | 久久伊人国产精品 | 精品黄色片 | 国产精品网红直播 | 韩国视频一区二区三区 | 美女国产在线 | 久久综合加勒比 | 精品自拍av | 日韩免费在线网站 | 久久乐九色婷婷综合色狠狠182 | 成人h视频在线播放 | 日韩av一区在线观看 | 亚洲 av网站 | 欧美黄色免费 | 久久激情视频免费观看 | 亚洲第一av在线播放 | 久久精品欧美视频 | 久久精品超碰 | 99热这里只有精品1 av中文字幕日韩 | 天天天天综合 | 久久亚洲综合色 | 日av免费 | 香蕉视频一级 | 久久99久久99精品免视看婷婷 | 黄色小网站免费看 | 91看片在线播放 | 香蕉久久久久久av成人 | 好看的国产精品视频 | 国产视频在线观看一区 | 91精品国自产在线偷拍蜜桃 | 天天射天天搞 | 黄色日本片 | 精品国产乱码久久久久久浪潮 | 中文字幕在线视频一区 | 91视频a | 国产午夜精品av一区二区 | 一区二区三区日韩在线观看 | 黄av资源| 91在线视频播放 | 激情综合网五月婷婷 | 成年人免费在线观看网站 | 久久精品一区二区三区四区 | 国产精品一区二区精品视频免费看 | 国产在线观看高清视频 | 99精品国自产在线 | 欧美91片| 亚洲国内精品在线 | 日日摸日日爽 | a级片网站 | 国产日韩精品在线观看 | 国产 欧美 日产久久 | 在线精品视频免费观看 | 91久久精品一区二区二区 | 国产精品久久电影网 | 99性视频| 狠狠伊人| 久青草视频在线观看 | 人人cao| 国产在线精品区 | 久久久国产精品久久久 | 亚洲国产精品视频 | 99热在线国产精品 | 久久在线影院 | 亚洲成人一区 | 日本不卡123 | 久久久国产在线视频 | 亚洲久草在线 | 亚洲天堂网在线视频观看 | 国产高清日韩欧美 | 一区二区三区精品在线视频 | japanesexxx乱女另类 | 国产精品一区二区三区视频免费 | 日韩中文字幕免费视频 | 欧美国产日韩在线观看 | 国产三级国产精品国产专区50 | 国产在线不卡 | 色偷偷88888欧美精品久久久 | 国精产品满18岁在线 | 日韩美一区二区三区 | 成片免费观看视频999 | 国产精品乱码久久久久久1区2区 | 国产淫片 | 91亚洲精品国偷拍自产在线观看 | 国产精品中文字幕av | 色婷婷激情四射 | 天天射综合网视频 | 又紧又大又爽精品一区二区 | 在线涩涩| 免费视频 三区 | 亚洲国产精品99久久久久久久久 | 精品免费视频123区 午夜久久成人 | 伊人中文在线 | 精品国产大片 | 永久免费视频国产 | 麻豆国产精品视频 | 日韩精品一区电影 | 亚洲九九九 | 天天躁天天躁天天躁婷 | 国产91区 | 成人久久综合 | 综合激情网... | 日韩欧美视频在线免费观看 | 亚洲精品国产片 | 亚洲精品久久久蜜臀下载官网 | 西西444www大胆高清图片 | 日本99久久 | 欧美最猛性xxxxx免费 | 日韩精品2区 | 韩日精品在线观看 | 国产精品99久久久久的智能播放 | 成人黄色国产 | 99久久国产免费看 | 成人理论在线观看 | 亚州精品在线视频 | 丁香九月激情 | 最新国产在线观看 | 天天激情 | 91色综合| 色偷偷88888欧美精品久久 | 久久免费视频8 | 成人 国产 在线 | 欧美伦理电影一区二区 | 亚洲国产精品女人久久久 | 在线观看免费一级片 | 国产91精品在线观看 | 成人97视频一区二区 | 五月综合 | 久久福利国产 | 国产免费国产 | 欧美成人xxx | 91污污视频在线观看 | 精精国产xxxx视频在线播放 | 97成人超碰 | 国产五月婷 | 特级西西444www高清大视频 | 精品女同一区二区三区在线观看 | 中文字幕在线播放第一页 | 亚洲综合成人婷婷小说 | 黄色免费看片网站 | 精品国产区 | 97超碰人 | av福利免费| 久久69精品久久久久久久电影好 | 狠狠色噜噜狠狠狠 | 免费人成在线观看网站 | 久久私人影院 | 嫩草av在线 | 操操操干干干 | 欧美日韩国产综合一区二区 | 日韩欧美在线一区 | 成人cosplay福利网站 |