|
188 | 188 | return converted; |
189 | 189 | } else if (elt.tagName === "VIDEO" || elt.tagName === "AUDIO") { |
190 | 190 | return new p5.MediaElement(elt); |
191 | | - } else { |
| 191 | + } else if ( elt.tagName === "SELECT" ){ |
| 192 | + return createSelect( new p5.Element(elt) ); |
| 193 | + } |
| 194 | + else { |
192 | 195 | return new p5.Element(elt); |
193 | 196 | } |
194 | 197 | } |
|
525 | 528 |
|
526 | 529 | /** |
527 | 530 | * Creates a dropdown menu <select></select> element in the DOM. |
| 531 | + * It also helps to assign select-box methods to p5.Element when selecting existing select box |
528 | 532 | * @method createSelect |
529 | | - * @param {boolean} [multiple] true if dropdown should support multiple selections |
530 | | - * @return {Object|p5.Element} pointer to p5.Element holding created node |
| 533 | + * @param {boolean} [multiple] true if dropdown should support multiple selections OR |
| 534 | + * @param {Object|p5.Element} if wrapping methods to existing select |
| 535 | + * @return {Object|p5.Element} pointer to p5.Element holding created or existing node |
531 | 536 | * @example |
532 | 537 | * <div><code> |
533 | 538 | * var sel; |
|
550 | 555 | * } |
551 | 556 | * </code></div> |
552 | 557 | */ |
553 | | - p5.prototype.createSelect = function(mult) { |
554 | | - var elt = document.createElement('select'); |
555 | | - if (mult){ |
556 | | - elt.setAttribute('multiple', 'true'); |
| 558 | + |
| 559 | + p5.prototype.createSelect = function() { |
| 560 | + var elt,self; |
| 561 | + var arg = arguments[0]; |
| 562 | + if( typeof arg === 'object' && arg.elt.nodeName == 'SELECT' ){ |
| 563 | + self = arg; |
| 564 | + elt = this.elt = arg.elt; |
| 565 | + }else{ |
| 566 | + elt = document.createElement('select'); |
| 567 | + if( arg && typeof arg === 'boolean' ){ |
| 568 | + elt.setAttribute('multiple', 'true'); |
| 569 | + } |
| 570 | + self = addElement(elt, this); |
557 | 571 | } |
558 | | - var self = addElement(elt, this); |
559 | 572 | self.option = function(name, value){ |
560 | 573 | var opt = document.createElement('option'); |
561 | 574 | opt.innerHTML = name; |
|
575 | 588 | } |
576 | 589 | return this; |
577 | 590 | }else{ |
578 | | - if (mult){ |
| 591 | + if (arg){ |
579 | 592 | for (var i = 0; i < this.elt.selectedOptions.length; i++){ |
580 | 593 | arr.push(this.elt.selectedOptions[i].value); |
581 | 594 | } |
|
0 commit comments