ebook Reader
ebook Reader
leiste_l
leiste_r

 

jQuery Kochbuch - Lösungen für jQuery-Entwickler

von: jQuery Community Experten

O'Reilly Verlag, 2010

Format: PDF, PDB, OL

geeignet für:

Mac OSX, Windows PC, Mac OSX, Windows PC , Palm eReader Online-Lesen für: Linux, Mac OSX, Windows PC

Preis: 32,00 Euro

(Ersparnis gegenüber gedruckter Ausgabe: 7,90 Euro)

ISBN: 9783897216006
Download: 9496 KB
488 Seiten

Mehr zum Inhalt

mehrinhalt_r

 

Inhaltsverzeichnis zu: jQuery Kochbuch - Lösungen für jQuery-Entwickler

Inhalt

7

Vorwort

15

Beteiligte

17

Kapitelautoren

17

Fachlektoren

20

Einleitung

21

21

Was Sie lernen werden

22

Stil und Konventionen von jQuery

22

Andere Optionen

23

Wenn Sie Probleme mit den Beispielen haben

23

Wenn Sie dieses Buch mö

24

Konventionen

24

Kapitel 1 &ndash

27

1.0 Einleitung

27

Warum jQuery?

28

Die Philosophie hinter jQuery

30

Elemente finden, mit denen dann etwas getan wird

30

Verketten

31

Die Wrapper-Sets von jQuery

32

Organisation der jQuery-API

33

1.1 Einbinden der jQuery-Bibliothek in eine HTML-Seite

35

Problem

35

35

Diskussion

36

1.2 Ausfü

37

Problem

37

37

Diskussion

37

1.3 Selektieren von DOM-Elementen mit Selektoren und der jQuery-Funktion

39

Problem

39

39

Diskussion

41

1.4 Selektieren von DOM-Elementen in einem bestimmten Kontext

41

Problem

41

41

Diskussion

42

1.5 Ein Wrapper-Set mit DOM-Elementen filtern

42

Problem

42

42

Diskussion

43

1.6 Abhä

44

Problem

44

44

Diskussion

45

1.7 Vor einer destruktiven Ä

45

Problem

45

45

Diskussion

46

1.8 Die vorherige Selektion mit der aktuellen Selektion vereinigen

47

Problem

47

47

Diskussion

47

1.9 Das DOM basierend auf dem aktuellen Kontext durchlaufen, um ein neues Set mit DOM-Elementen zu erhalten

48

Problem

48

48

Diskussion

49

1.10 DOM-Elemente erstellen, bearbeiten und einfü

49

Problem

49

49

Diskussion

50

1.11 Entfernen von DOM-Elementen

51

Problem

51

51

Diskussion

52

1.12 DOM-Elemente ersetzen

52

Problem

52

52

Diskussion

53

1.13 DOM-Elemente klonen

53

Problem

53

53

Diskussion

54

1.14 Attribute von DOM-Elementen lesen, setzen und entfernen

56

Problem

56

56

Diskussion

57

1.15 HTML-Inhalte lesen und setzen

57

Problem

57

57

Diskussion

58

1.16 Text-Inhalte lesen und setzen

58

Problem

58

58

Diskussion

59

1.17 Den $-Alias verwenden, ohne globale Konflikte zu erzeugen

59

Problem

59

59

Diskussion

59

Kapitel 2 &ndash

61

2.0 Einfü

61

2.1 Nur Kind-Elemente selektieren

62

Problem

62

62

Diskussion

63

2.2 Bestimmte Geschwister-Elemente selektieren

64

Problem

64

64

Diskussion

65

2.3 Elemente ü

65

Problem

65

65

Diskussion

67

2.4 Aktuell animierte Elemente selektieren

67

Problem

67

68

Diskussion

68

2.5 Elemente anhand ihres Inhalts selektieren

68

Problem

68

68

Diskussion

69

2.6 Elemente ü

69

Problem

69

69

Diskussion

69

2.7 Elemente anhand ihrer Sichtbarkeit selektieren

70

Problem

70

70

Diskussion

70

2.8 Elemente anhand von Attributen selektieren

71

Problem

71

71

Diskussion

72

2.9 Form-Elemente anhand des Typs selektieren

72

Problem

72

72

Diskussion

73

2.10 Elemente mit bestimmten Eigenschaften selektieren

73

Problem

73

74

Diskussion

75

2.11 Den Kontext-Parameter verwenden

75

Problem

75

75

Diskussion

76

2.12 Einen eigenen Filter-Selektor erstellen

76

Problem

76

76

Diskussion

77

Kapitel 3 &ndash

79

3.0 Einfü

79

3.1 Ein Set mit selektierten Ergebnissen durchlaufen

79

Problem

79

79

Diskussion

80

3.2 Das Selektions-Set auf ein bestimmtes Element reduzieren

82

Problem

82

82

Diskussion

85

3.3 Ein selektiertes jQuery-Objekt in ein reines DOM-Objekt konvertieren

85

Problem

85

85

Diskussion

87

3.4 Den Index eines Elements in einer Selektion ermitteln

88

Problem

88

88

Diskussion

89

3.5 Aus einem bestehenden Array ein Array mit ausgewä

90

Problem

90

90

Diskussion

92

3.6 Eine Aktion auf einer Untermenge des selektierten Sets ausfü

92

Problem

92

92

Diskussion

95

3.7 Konfigurieren von jQuery, so dass es nicht mit anderen Bibliotheken kollidiert

95

Problem

95

95

Diskussion

96

3.8 Funktionalitä

97

Problem

97

97

Diskussion

99

3.9 Die verwendete Selektion bestimmen

100

Problem

100

100

Diskussion

101

Kapitel 4 &ndash

103

4.0 Einfü

103

4.1 Features mit jQuery.support erkennen

103

Problem

103

103

Diskussion

104

4.2 Mit jQuery.each ü

105

Problem

105

105

Diskussion

105

4.3 Arrays mit jQuery.grep filtern

106

Problem

106

106

Diskussion

106

4.4 Ü

107

Problem

107

107

Diskussion

107

4.5 Zwei Arrays durch jQuery.merge kombinieren

107

Problem

107

108

Diskussion

108

4.6 Doppelte Array-Einträ

108

Problem

108

108

Diskussion

109

4.7 Callback-Funktionen mit jQuery.isFunction testen

109

Problem

109

109

Diskussion

109

4.8 Whitespace aus Strings oder Form-Werten mit jQuery.trim entfernen

110

Problem

110

110

Diskussion

110

4.9 Objekte und Daten per jQuery.data an DOM-Elemente anhä

110

Problem

110

111

Diskussion

111

4.10 Objekte durch jQuery.extend erweitern

112

Problem

112

112

Diskussion

112

Kapitel 5 &ndash

115

5.0 Einfü

115

5.1 Das ist nicht jQuery, sondern JavaScript!

115

Problem

115

116

Diskussion

116

5.2 Was ist an $(this) falsch?

116

Problem

116

117

Diskussion

117

5.3 Ü

119

Problem

119

119

120

Diskussion

120

5.4 Ihre verketteten jQuery-Methoden formatieren

121

Problem

121

121

Diskussion

121

5.5 Code aus anderen Bibliotheken ü

122

Problem

122

123

Diskussion

123

5.6 Einen eigenen Iterator schreiben

125

Problem

125

125

Diskussion

126

5.7 Ein Attribut umschalten

127

Problem

127

127

Diskussion

129

5.8 Performance-Killer finden

129

Problem

129

130

Diskussion

130

5.9 Ihre jQuery-Objekte puffern

134

Problem

134

134

Diskussion

135

5.10 Schnellere Selektoren schreiben

135

Problem

135

136

Diskussion

137

5.11 Tabellen schneller laden

137

Problem

137

139

Diskussion

140

5.12 Schleifen programmieren

140

Problem

140

141

Diskussion

143

5.13 Name Lookups verringern

143

Problem

143

143

Diskussion

144

5.14 Das DOM mit .innerHTML schneller aktualisieren

146

Problem

146

146

Diskussion

146

5.15 Debuggen? Sprengen Sie die Ketten

147

Problem

147

147

Diskussion

149

5.16 Ist das ein Bug von jQuery?

149

Problem

149

149

Diskussion

150

5.17 In jQuery debuggen

150

Problem 1

150

150

Problem 2

151

151

Diskussion

152

5.18 Weniger Server-Anfragen erzeugen

152

Problem

152

153

Diskussion

154

5.19 Zurü

155

Problem

155

156

Diskussion

157

5.20 jQuery fü

157

Problem

157

157

Diskussion

159

5.21 Machen Sie Ihre Seiten barrierefrei

159

Problem

159

159

Diskussion

162

Kapitel 6 &ndash

163

6.0 Einfü

163

6.1 Die Dimensionen von Window und Document ermitteln

163

Problem

163

163

Diskussion

163

6.2 Ermitteln der Dimensionen eines Elements

164

Problem

164

165

Diskussion

166

6.3 Den Offset eines Elements ermitteln

167

Problem

167

167

Diskussion

169

6.4 Ein Element in den sichtbaren Bereich scrollen

169

Problem

169

169

170

6.5 Ermitteln, ob sich ein Element im sichtbaren Bereich befindet

171

Problem

171

171

6.6 Zentrieren eines Elements im sichtbaren Bereich

174

Problem

174

174

6.7 Absolute Positionierung eines Elements an seiner aktuellen Position

175

Problem

175

175

6.8 Ein Element relativ zu einem anderen Element positionieren

175

Problem

175

175

6.9 Stylesheets abhä

177

Problem

177

177

177

177

178

Diskussion

178

Kapitel 7 &ndash

179

7.0 Einfü

179

Methode animate

180

Animations-Geschwindigkeiten

180

Effekt-Vorlage

180

7.1 Elemente per Sliding und Fading ein- und ausblenden

181

Problem

181

181

Slide

181

Fade

182

Beides

182

Diskussion

183

7.2 Elemente durch ein Sliding Up anzeigen

184

Problem

184

184

HTML

184

CSS

184

jQuery

185

Diskussion

185

7.3 Erzeugen eines horizontalen Akkordeons

186

Problem

186

186

HTML

186

CSS

186

jQuery

187

Diskussion

187

7.4 Elemente gleichzeitig Sliden und Faden

189

190

Diskussion

190

7.5 Sequenzielle Effekte anwenden

190

Problem

190

190

Manueller Callback

191

Automatische Sequenz

191

Diskussion

191

7.6 Erkennen, ob Elemente aktuell animiert werden

192

Problem

192

192

Diskussion

193

7.7 Animationen stoppen und zurü

193

Problem

193

194

Diskussion

194

7.8 Eigene Easing-Methoden fü

195

Problem

195

195

Diskussion

195

7.9 Alle Effekte deaktivieren

196

Problem

196

196

Diskussion

196

7.10 Aufwä

197

Problem

197

197

CSS

197

jQuery

198

Diskussion

198

Kapitel 8 &ndash

199

8.0 Einfü

199

8.1 Einen Handler mit vielen Events verbinden

200

Problem

200

200

Diskussion

201

8.2 Eine Handler-Funktion mit anderen Daten wiederverwenden

201

Problem

201

202

Diskussion

202

8.3 Ein ganzes Set mit Eventhandlern entfernen

203

Problem

203

203

Diskussion

204

Wie bindet man mit einem Namensraum?

204

Wie rä

204

8.4 Eventhandler auslö

204

Problem

204

204

Diskussion

205

Wie lö

205

Wie lö

205

8.5 Dynamische Daten an Eventhandler ü

205

Problem

205

205

Diskussion

206

Zusä

206

Mehr Beispiele

206

Ein eigenes Event-Objekt ü

207

Was ist der Unterschied zu event.data?

208

8.6 Sofortiger Zugriff auf ein Element (noch vor document.ready)

208

Problem

208

208

Diskussion

208

Ein Element direkt verbergen (oder eine andere Ä

208

Eventhandler so schnell wie mö

209

Andere Situationen

210

Polling

210

Skripte positionieren

210

8.7 Die Ausfü

211

Problem

211

211

Diskussion

212

Beispiele

212

Einfaches Ü

212

Alle Events stoppen

212

Nachteile dieses Vorgehens

212

8.8 Beim Verwenden von event.target das richtige Element erhalten

213

Problem

213

213

Diskussion

214

8.9 Mehrere parallele hover()-Animationen vermeiden

215

Problem

215

215

Diskussion

215

Beispiel

215

Der Rest

216

8.10 Eventhandler fü

217

Problem

217

217

Diskussion

218

Warum gehen Eventhandler verloren?

218

Eine kleine Einfü

218

Vor- und Nachteile jeder Lö

219

Rebinding

219

Event-Delegation

219

Ergebnis

219

Kapitel 9 &ndash

221

9.0 Einfü

221

9.1 jQuery nutzen, wenn es dynamisch geladen wird

221

Problem

221

221

Diskussion

222

Was ist jQuery.ready()?

222

Warum ist das passiert?

222

9.2 Das globale Auslö

222

Problem

222

223

Diskussion

224

Vor- und Nachteile

224

Den Listenern weitere Funktionalitä

224

9.3 Eigene Events erstellen

225

Problem

225

226

Diskussion

226

Bindings fü

226

Ein reales Beispiel

227

Bestehende Anwendungsfä

227

9.4 Eventhandler stellen benö

228

Problem

228

228

Diskussion

228

Wie kann man das mit jQuery 1.3 und hö

228

Vorgehen vor jQuery 1.3

230

Eventhandler kö

230

9.5 Event-gesteuerte Plugins erstellen

231

Problem

231

231

Diskussion

232

Ein Beispiel

232

Was passiert, wenn ein Element schon eines dieser Events besitzt?

234

Wie kann ich es anderen ermö

234

Was ist der Unterschied zu anderen Vorgehensweisen?

234

Das Plugin kann Anweisungen entgegennehmen

234

Ein Objekt mit Methoden zurü

235

9.6 Benachrichtigungen erhalten, wenn jQuery-Methoden aufgerufen werden

235

Problem

235

236

Diskussion

236

Die gewü

236

Ein Event vor der Ausfü

236

Die ursprü

237

Ein Event nach der Ausfü

237

Das Ergebnis zurü

237

Alles zusammen

237

Was kann man noch machen?

238

9.7 Objekt-Methoden als Event Listener nutzen

239

Problem

239

239

Diskussion

239

Wo ist der Knoten hin?

239

Das Beispiel

239

Die Objekte

239

Die Methoden binden

240

Kapitel 10 &ndash

243

10.0 Einfü

243

10.1 Ein Texteingabefeld beim Laden der Seite fokussieren

244

Problem

244

244

Diskussion

244

10.2 Form-Elemente aktivieren und deaktivieren

245

Problem

245

245

246

Diskussion

247

10.3 Automatisch Radio Buttons auswä

248

Problem

248

248

248

Diskussion

249

10.4 (De)selektieren aller Checkboxen durch Links

250

Problem

250

250

Diskussion

250

10.5 (De)selektieren aller Checkboxen ü

251

Problem

251

252

Diskussion

252

10.6 Auswahl-Optionen hinzufü

253

Problem

253

253

Diskussion

254

10.7 Abhä

254

Problem

254

255

Diskussion

256

10.8 Anzahl der verbleibenden Zeichen anzeigen

256

Problem

256

257

Diskussion

258

10.9 Texteingabefelder auf bestimmte Zeichen beschrä

259

Problem

259

259

Diskussion

260

10.10 Eine Form mit Ajax abschicken

260

Problem

260

261

Diskussion

262

10.11 Forms ü

262

Problem

262

264

Diskussion

265

Kapitel 11 &ndash

269

11.0 Einleitung

269

Grundlegendes Vorgehen

269

11.1 Forms ü

270

Problem

270

270

Diskussion

272

Methoden

273

Eigene Methoden

273

Regeln

274

Abhä

275

Eigene Ausdrü

276

Fehlermeldungen

276

Lokalisierung

277

Fehler-Element

277

Layout

277

Umgang mit submit

278

Einschrä

279

11.2 Eingabemasken fü

280

Problem

280

280

Diskussion

280

Einschrä

281

11.3 Textfelder automatisch vervollstä

282

Problem

282

282

Diskussion

283

11.4 Einen Wertebereich selektieren

283

Problem

283

283

Diskussion

284

11.5 Einen Wert eingeben, der innerhalb bestimmter Grenzen liegt

286

Problem

286

286

Diskussion

286

Integration mit Google Maps

287

11.6 Dateien im Hintergrund hochladen

288

Problem

288

289

Diskussion

289

11.7 Die Lä

290

Problem

290

290

Diskussion

290

11.8 Label oberhalb von Eingabefeldern anzeigen

291

Problem

291

291

Diskussion

292

11.9 Ein Eingabeelement mit seinem Inhalt wachsen lassen

292

Problem

292

293

Diskussion

293

11.10 Ein Datum wä

293

Problem

293

294

Diskussion

295

Lokalisierung

295

Kapitel 12 &ndash

297

12.0 Einleitung

297

12.1 Wo finden Sie jQuery-Plugins?

297

Problem

297

297

Diskussion

298

Im jQuery Plugin Repository suchen

298

In Google Code suchen

298

In GitHub suchen

298

Mit Google suchen

299

In SourceForge suchen

299

12.2 Wann sollten Sie ein jQuery-Plugin schreiben?

299

Problem

299

300

Diskussion

300

Ein Plugin bauen, wenn es einen potenziellen Anwenderkreis gibt

300

Das fü

300

Berü

301

12.3 Schreiben Sie Ihr erstes jQuery-Plugin

301

Problem

301

301

Eine eigene jQuery-Methode schreiben

302

Eine eigene jQuery-Funktion schreiben

302

Diskussion

302

12.4 Ihrem Plugin Optionen mitgeben

303

Problem

303

303

Diskussion

304

12.5 Die Kurzform $ in Ihrem Plugin verwenden

304

Problem

304

305

Diskussion

305

12.6 Private Funktionen in Ihr Plugin aufnehmen

306

Problem

306

306

Diskussion

307

12.7 Das Metadata-Plugin unterstü

308

Problem

308

308

Diskussion

309

12.8 Ihrem Plugin eine statische Funktion hinzufü

310

Problem

310

310

Diskussion

311

12.9 Unit Tests fü

312

Problem

312

312

Diskussion

313

Kapitel 13 &ndash

315

13.0 Einleitung

315

13.1 Eigene Tooltips erstellen

317

Problem

317

317

Tooltip &ndash

317

Tooltip &ndash

318

Diskussion

320

13.2 In einem Baum navigieren

321

Problem

321

321

Baum &ndash

322

Baum &ndash

323

Diskussion

324

13.3 Ein Akkordeon aufziehen

324

Problem

324

325

Akkordeon &ndash

326

Akkordeon &ndash

327

Diskussion

328

13.4 Registerkarten in einem Dokument

329

Problem

329

329

Registerkarten &ndash

330

Registerkarten &ndash

331

Diskussion

332

13.5 Ein einfaches modales Fenster anzeigen

332

Problem

332

333

Modales Fenster &ndash

334

Modales Fenster &ndash

334

Diskussion

337

13.6 Dropdown-Menü

339

Problem

339

339

Dropdown-Menü

340

Dropdown-Menü

340

Diskussion

341

13.7 Bilder zyklisch einblenden

341

Problem

341

342

Rotator &ndash

342

Rotator &ndash

343

Diskussion

345

13.8 Sliding Panels

346

Problem

346

346

Panel &ndash

347

Panel &ndash

348

Diskussion

349

Kapitel 14 &ndash

351

14.0 Einleitung

351

Interaktionen

351

Widgets

352

Effekte

352

Grundlegende Verwendung

352

Wie dieses Kapitel aufgebaut ist

352

14.1 Die komplette jQuery UI-Suite einbinden

353

Problem

353

353

Diskussion

353

14.2 Ein oder zwei einzelne jQuery UI-Plugins einbinden

354

Problem

354

354

Diskussion

354

14.3 Ein jQuery UI-Plugin mit den Standard-Optionen initialisieren

355

Problem

355

355

Diskussion

355

14.4 Ein jQuery UI-Plugin mit eigenen Optionen initialisieren

356

Problem

356

357

Diskussion

357

14.5 Eigene jQuery UI-Plugin-Standardwerte erstellen

357

Problem

357

358

Diskussion

358

14.6 Optionen fü

359

Problem

359

359

359

Diskussion

359

14.7 Plugin-Methoden von jQuery UI aufrufen

360

Problem

360

360

Diskussion

360

14.8 Mit Events von jQuery UI-Plugins umgehen

361

Problem

361

361

361

Diskussion

362

14.9 Ein jQuery UI-Plugin zerstö

363

Problem

363

363

Diskussion

363

14.10 Einen Musikplayer mit jQuery UI erstellen

363

Problem

363

364

HTML5 Audio

364

Der Musikplayer

365

Buttons zum Abspielen und Pausieren

366

Label fü

367

Slider fü

368

Fortschrittsbalken, um den Pufferstatus anzuzeigen

370

Lautstä

371

Hintergrund des Widgets und letzte Feinarbeiten

374

Kapitel 15 &ndash

377

15.0 Einleitung

377

Die Komponenten von jQuery UI CSS verstehen

378

15.1 Themes fü

382

Problem

382

382

Schritt 1. ThemeRoller ö

383

Schritt 2. Ein Theme erstellen und in der Vorschau betrachten

385

Schritt 3. Die jQuery UI-Widgets und das Theme herunterladen

391

Schritt 4. Dateien in Ihrem Projektverzeichnis zusammenfü

392

Schritt 5. Auf die Theme-Stylesheets in Ihrem Projekt verweisen

393

Diskussion

395

15.2 Layout und Theme-Styles von jQuery UI ü

396

Problem

396

396

Schritt 1. Markup und Styles des Widgets des jQuery UI-Plugins untersuchen

397

Schritt 2. Erstellen eines Override-Stylesheets

399

Schritt 3. Die Style-Regeln im Override-Stylesheet bearbeiten

400

Eingeschrä

400

Override-Regeln schreiben

401

Diskussion

406

15.3 Ein Theme auf Komponenten anwenden, die nicht zum jQuery UI gehö

407

Problem

407

407

Schritt 1: Die verfü

408

Schritt 2: Framework-Klassen fü

412

Diskussion

416

15.4 Mehrere Themes auf einer einzelnen Seite verwenden

417

Problem

417

417

Schritt 1. Ein weiteres Theme mit ThemeRoller erstellen

419

Schritt 2. Das neue Theme mit einem Gü

420

Schritt 3. Vereinigen der Dateien in Ihrem Projektverzeichnis

423

Schritt 4. Das Stylesheet des eingeschrä

425

15.5 Anhang: Weitere Informationen zu CSS

426

Kapitel 16 &ndash

427

16.0 Einleitung

427

16.1 jQuery und Ajax

427

Problem

427

427

Diskussion

428

16.2 Ajax auf der gesamten Site verwenden

430

Problem

430

430

Diskussion

430

16.3 Einfache Ajax-Anwendung mit Rü

432

Problem

432

432

Diskussion

432

16.4 Ajax-Hilfsfunktionen und Datentypen

436

Problem

436

436

Diskussion

436

16.5 HTML-Fragmente mit jQuery einsetzen

438

Problem

438

439

Diskussion

439

16.6 XML-Code in ein DOM konvertieren

439

Problem

439

439

Diskussion

440

16.7 JSON erzeugen

440

Problem

440

441

Diskussion

441

16.8 JSON parsen

441

Problem

441

441

Diskussion

442

16.9 jQuery und JSONP verwenden

442

Problem

442

442

Diskussion

443

Kapitel 17 &ndash

445

17.0 Einleitung

445

17.1 Auf dem Client speichern

445

Problem

445

445

Diskussion

447

17.2 Den Anwendungs-Status fü

448

Problem

448

448

Diskussion

449

17.3 Den Anwendungs-Status ü

450

Problem

450

450

Diskussion

451

17.4 Eine JavaScript Template Engine nutzen

451

Problem

451

451

Diskussion

453

17.5 Ajax-Anfragen queuen

454

Problem

454

454

Diskussion

456

17.6 Ajax und der Zurü

456

Problem

456

456

Diskussion

457

17.7 JavaScript am Seitenende unterbringen

458

Problem

458

458

Diskussion

458

Kapitel 18 &ndash

461

18.0 Einleitung

461

18.1 Unit Tests automatisieren

461

Problem

461

462

Diskussion

463

18.2 Ergebnisse sicherstellen

463

Problem

463

463

ok( boolean[, message ])

463

equal( actual, expected[, message ])

464

deepEqual( actual, expected[, message ])

464

18.3 Synchrone Callbacks testen

464

Problem

464

465

Diskussion

465

18.4 Asynchrone Callbacks testen

465

Problem

465

465

Diskussion

465

18.5 Benutzeraktionen testen

466

Problem

466

466

Diskussion

467

18.6 Tests atomar halten

467

Problem

467

468

Diskussion

468

18.7 Tests gruppieren

469

Problem

469

469

Diskussion

469

18.8 Durchzufü

470

Problem

470

470

Diskussion

470

Index

473