⏱Limited Time✈️Over $49.99 Free Shipping✈️
Christmas Ribbon Bows Strings Layer LED Lights
Christmas Ribbon Bows Strings Layer LED Lights
Christmas Ribbon Bows Strings Layer LED Lights
Christmas Ribbon Bows Strings Layer LED Lights
Christmas Ribbon Bows Strings Layer LED Lights
Christmas Ribbon Bows Strings Layer LED Lights
1 / 6
Christmas Ribbon Bows Strings Layer LED Lights
Christmas Ribbon Bows Strings Layer LED Lights
Christmas Ribbon Bows Strings Layer LED Lights
Christmas Ribbon Bows Strings Layer LED Lights
Christmas Ribbon Bows Strings Layer LED Lights
Christmas Ribbon Bows Strings Layer LED Lights
50% OFF
韩文俊

Christmas Ribbon Bows Strings Layer LED Lights

$25.95 $51.90
0 sold
Color
Size
Qty
No Paypal, No Problem!
You can still purchase with your credit card
  • Buy More Get More Discount. 
  • Returns>> Fast refund,100% Money Back Guarantee.
  • 96.8% of Reviewers Recommends This Product.

Decor Your Home With The Most Beautiful Ribbon Multiple Color LED Ribbons

With 40 LED string bulbs, glowing warm charming light, this ribbon string light will create romantic atmosphere, perfect for decorating your patio, garden, room, ladder, wedding, Christmas tree and parties.

DIY Your Favorite Shape

This fairy light is malleable and is 13ft long, you can DIY into any shape you like, such as a bow; its hollow design allows light to permeate through, with which you can make full use of the light and shadow effect to decorate your room.

Safety Guarante

Low-voltage product, will not be overheated even after long time using, and it is durable.

Waterproof

Made of waterproof material, this string light for Christmas trees can be used both indoor and outdoor. (Please note that the battery box is not waterproof.)

Battery Operated

Our lighted Christmas ribbon is battery operated (needs 3 AA batteries, not included), and you can use it anywhere, especially where there are no power supplies.

MONEY BACK GUARANTEE

    We want you to be 100% satisfied with the products you buy from us. If for ANY reason you are not satisfied with your purchase, we offer an iron-clad money-back guarantee. Buying online can be a daunting task, so we want you to realize that there are absolutely ZERO risks in buying something and trying it out. If you don’t like it, we’ll make it right… It’s our promise!

    You May Also Like Don't Like These?
    Customer Reviews

    Here are what our customers say.

    Write a Review
    Customer Reviews
    Wow you reached the bottom
    Newest
    Most liked
    Highest ratings
    Lowest ratings
    ×
    class SpzCustomFileUpload extends SPZ.BaseElement { constructor(element) { super(element); this.uploadCount_ = 0; this.fileList_ = []; } buildCallback() { this.action = SPZServices.actionServiceForDoc(this.element); this.registerAction('upload', (data) => { this.handleFileUpload_(data.event?.detail?.data || []); }); this.registerAction('delete', (data) => { this.handleFileDelete_(data?.args?.data); }); this.registerAction('preview', (data) => { this.handleFilePreview_(data?.args?.data); }); this.registerAction('limit', (data) => { this.handleFileLimit_(); }); this.registerAction('sizeLimit', (data) => { this.handleFileSizeLimit_(); }); } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } setData_(count, file) { this.uploadCount_ = count; this.fileList_ = file; } handleFileUpload_(data) { data.forEach(i => { if(this.fileList_.some(j => j.url === i.url)) return; this.fileList_.push(i); }) this.uploadCount_++; sessionStorage.setItem('fileList', JSON.stringify(this.fileList_)); this.triggerEvent_("handleFileUpload", { count: this.uploadCount_, files: this.fileList_}); if(this.fileList_.length >= 5){ document.querySelector('#review_upload').style.display = 'none'; } if(this.fileList_.length > 0){ document.querySelector('.apps-reviews-write-anonymous-box').style.marginTop = '8px'; } } handleFileDelete_(index) { this.fileList_.splice(index, 1); this.uploadCount_--; sessionStorage.setItem('fileList', JSON.stringify(this.fileList_)); this.triggerEvent_("handleFileDelete", { count: this.uploadCount_, files: this.fileList_}); document.querySelector('#review_upload').style.display = 'block'; if(this.fileList_?.length === 0){ document.querySelector('.apps-reviews-write-anonymous-box').style.marginTop = '132px'; } } handleFilePreview_(index) { const finalPreviewData = this.fileList_[index]; const filePreviewModal = document.getElementById('filePreviewModal'); const fullScreenVideo = document.getElementById('fullScreenVideo'); const fullScreenImage = document.getElementById('fullScreenImage'); const previewModalClose = document.getElementById('previewModalClose'); const previewLoading = document.getElementById('previewLoading'); filePreviewModal.style.display = 'block'; previewLoading.style.display = 'flex'; if(finalPreviewData?.type === 'video'){ const media = this.mediaParse_(this.fileList_[index]?.url); fullScreenVideo.addEventListener('canplaythrough', function() { previewLoading.style.display = 'none'; }); fullScreenImage.src = ''; fullScreenImage.style.display = 'none'; fullScreenVideo.style.display = 'block'; fullScreenVideo.src = media.mp4 || ''; } else { fullScreenImage.onload = function() { previewLoading.style.display = 'none'; }; fullScreenVideo.src = ''; fullScreenVideo.style.display = 'none'; fullScreenImage.style.display = 'block'; fullScreenImage.src = finalPreviewData.url; } previewModalClose.addEventListener('click', function() { filePreviewModal.style.display = 'none'; }); } handleFileLimit_() { alert(window.AppReviewsLocale.comment_file_limit || 'please do not upload files more than 5'); this.triggerEvent_("handleFileLimit"); } handleFileSizeLimit_() { alert(window.AppReviewsLocale.comment_file_size_limit || 'File size does not exceed 10M'); } clear(){ this.fileList_ = []; this.uploadCount_ = 0; sessionStorage.setItem('fileList', JSON.stringify(this.fileList_)); this.triggerEvent_("handleClear", { count: this.uploadCount_, files: this.fileList_}); document.querySelector('#review_upload').style.display = 'block'; } mediaParse_(url) { var result = {}; try { url.replace(/[?&]+([^=&]+)=([^&]*)/gi, function (str, key, value) { try { result[key] = decodeURIComponent(value); } catch (e) { result[key] = value; } }); result.preview_image = url.split('?')[0]; } catch (e) {}; return result; } triggerEvent_(name, data) { const event = SPZUtils.Event.create(this.win, name, data); this.action.trigger(this.element, name, event); } } SPZ.defineElement('spz-custom-file-upload', SpzCustomFileUpload);
    The review would not show in product details on storefront since it does not support to.