Holdy 2-In-1 Extendable 360° Rotating Base Dual Car Cup Holder
Holdy 2-In-1 Extendable 360° Rotating Base Dual Car Cup Holder
Holdy 2-In-1 Extendable 360° Rotating Base Dual Car Cup Holder
Holdy 2-In-1 Extendable 360° Rotating Base Dual Car Cup Holder
Holdy 2-In-1 Extendable 360° Rotating Base Dual Car Cup Holder
Holdy 2-In-1 Extendable 360° Rotating Base Dual Car Cup Holder
Holdy 2-In-1 Extendable 360° Rotating Base Dual Car Cup Holder
Holdy 2-In-1 Extendable 360° Rotating Base Dual Car Cup Holder
Holdy 2-In-1 Extendable 360° Rotating Base Dual Car Cup Holder
Holdy 2-In-1 Extendable 360° Rotating Base Dual Car Cup Holder
Holdy 2-In-1 Extendable 360° Rotating Base Dual Car Cup Holder
Holdy 2-In-1 Extendable 360° Rotating Base Dual Car Cup Holder
Holdy 2-In-1 Extendable 360° Rotating Base Dual Car Cup Holder
Holdy 2-In-1 Extendable 360° Rotating Base Dual Car Cup Holder
Holdy 2-In-1 Extendable 360° Rotating Base Dual Car Cup Holder
1 / 15
Holdy 2-In-1 Extendable 360° Rotating Base Dual Car Cup Holder
Holdy 2-In-1 Extendable 360° Rotating Base Dual Car Cup Holder
Holdy 2-In-1 Extendable 360° Rotating Base Dual Car Cup Holder
Holdy 2-In-1 Extendable 360° Rotating Base Dual Car Cup Holder
Holdy 2-In-1 Extendable 360° Rotating Base Dual Car Cup Holder
Holdy 2-In-1 Extendable 360° Rotating Base Dual Car Cup Holder
Holdy 2-In-1 Extendable 360° Rotating Base Dual Car Cup Holder
Holdy 2-In-1 Extendable 360° Rotating Base Dual Car Cup Holder
Holdy 2-In-1 Extendable 360° Rotating Base Dual Car Cup Holder
Holdy 2-In-1 Extendable 360° Rotating Base Dual Car Cup Holder
Holdy 2-In-1 Extendable 360° Rotating Base Dual Car Cup Holder
Holdy 2-In-1 Extendable 360° Rotating Base Dual Car Cup Holder
Holdy 2-In-1 Extendable 360° Rotating Base Dual Car Cup Holder
Holdy 2-In-1 Extendable 360° Rotating Base Dual Car Cup Holder
Holdy 2-In-1 Extendable 360° Rotating Base Dual Car Cup Holder
65% OFF

Holdy 2-In-1 Extendable 360° Rotating Base Dual Car Cup Holder

$34.95 $99.95
0 sold
Color
Qty
/** @private {string} */ class SpzCustomAnchorScroll extends SPZ.BaseElement { static deferredMount() { return false; } constructor(element) { super(element); /** @private {Element} */ this.scrollableContainer_ = null; } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } buildCallback() { this.viewport_ = this.getViewport(); this.initActions_(); } setTarget(containerId, targetId) { this.containerId = '#' + containerId; this.targetId = '#' + targetId; } scrollToTarget() { const container = document.querySelector(this.containerId); const target = container.querySelector(this.targetId); const {scrollTop} = container; const eleOffsetTop = this.getOffsetTop_(target, container); this.viewport_ .interpolateScrollIntoView_( container, scrollTop, scrollTop + eleOffsetTop ); } initActions_() { this.registerAction( 'scrollToTarget', (invocation) => this.scrollToTarget(invocation?.caller) ); this.registerAction( 'setTarget', (invocation) => this.setTarget(invocation?.args?.containerId, invocation?.args?.targetId) ); } /** * @param {Element} element * @param {Element} container * @return {number} * @private */ getOffsetTop_(element, container) { if (!element./*OK*/ getClientRects().length) { return 0; } const rect = element./*OK*/ getBoundingClientRect(); if (rect.width || rect.height) { return rect.top - container./*OK*/ getBoundingClientRect().top; } return rect.top; } } SPZ.defineElement('spz-custom-anchor-scroll', SpzCustomAnchorScroll); const STRENGTHEN_TRUST_URL = "/api/strengthen_trust/settings"; class SpzCustomStrengthenTrust extends SPZ.BaseElement { constructor(element) { super(element); this.renderElement_ = null; } isLayoutSupported(layout) { return layout == SPZCore.Layout.CONTAINER; } buildCallback() { this.xhr_ = SPZServices.xhrFor(this.win); const renderId = this.element.getAttribute('render-id'); SPZCore.Dom.waitForChild( document.body, () => !!document.getElementById(renderId), () => { this.renderElement_ = SPZCore.Dom.scopedQuerySelector( document.body, `#${renderId}` ); if (this.renderElement_) { this.render_(); } this.registerAction('track', (invocation) => { this.track_(invocation.args); }); } ); } render_() { this.fetchData_().then((data) => { if (!data) { return; } SPZ.whenApiDefined(this.renderElement_).then((apis) => { apis?.render(data); document.querySelector('#strengthen-trust-render-1539149753700').addEventListener('click',(event)=>{ if(event.target.nodeName == 'A'){ this.track_({type: 'trust_content_click'}); } }) }); }); } track_(data = {}) { const track = window.sa && window.sa.track; if (!track) { return; } track('trust_enhancement_event', data); } parseJSON_(string) { let result = {}; try { result = JSON.parse(string); } catch (e) {} return result; } fetchData_() { return this.xhr_ .fetchJson(STRENGTHEN_TRUST_URL) .then((responseData) => { if (!responseData || !responseData.data) { return null; } const data = responseData.data; const moduleSettings = (data.module_settings || []).reduce((result, moduleSetting) => { return result.concat(Object.assign(moduleSetting, { logos: (moduleSetting.logos || []).map((item) => { return moduleSetting.logos_type == 'custom' ? this.parseJSON_(item) : item; }) })); }, []); return Object.assign(data, { module_settings: moduleSettings, isEditor: window.self !== window.top, }); }); } } SPZ.defineElement('spz-custom-strengthen-trust', SpzCustomStrengthenTrust);
DOUBLE THE CUP HOLDER SPACE
Convert the normal vehicle cup holders into an extensible base capable of holding large drinks, water bottles, tablets, and other accessories while keeping them easily accessible.
360° ADJUSTABLE BASE
To save space, flexibly stack the cup holders vertically, or twist the upper cup holder 360° until it reaches the easily accessible position for your beverage.
EASILY FIT IN
Extendable arms can be stretched up to 6 inches to fit the largest bottle and fast food plates. Safely secure cell phones, keys, coins, pens, sunglasses, beverages, instant noodles cups,
STABLE SHOCKPROOF PADS
Anti-skid sponge cushions occupy the gap between the mount and the holder's base, minimizing vibration while also stabilizing the holder.
EASY INSTALLATION
Simply stick the shockproof pads and insert the base into the original car cup holder.
 
UNIVERSAL FIT
The base is designed to suit most standard-size cup holders. Works in practically any vehicle that has a cup holder, including cars, SUVs, trucks, boats, golf carts, RVs, and others.
SPECIFICATIONS
  • Material: ABS Plastic + Silicone
  • Color: Carbon Black, Matte Black
  • 360-degree design
  • Extendable arms
  • Dimension: 


CLICK ADD TO CART TO ENJOY THE COMFY!

🌎 Worldwide Shipping ✈

Please do note that shipping is insured and takes within 7-14 business days worldwide. However, you may receive your items earlier. Tracking Numbers will ALWAYS be sent so you can track it every step of the way! Cool things are worth waiting for! 😉

🔒 100% Risk-Free Purchase 🔥 

If you bought it and felt that it is not for you, don't worry. Just shoot us a message at contact customer service, and we will make it right by offering you a replacement or refund. 100% Simple & Risk-Free process.

📦 Insured Worldwide Shipping: Each order includes real-time tracking details and insurance coverage in the unlikely event that a package gets lost or stolen in transit.

🔒 Safe & Secure Checkouts: We use state-of-the-art SSL Secure encryption to keep your personal and financial information 100% protected.

If you bought it and felt that it is not for you, don't worry. We will make it right by offering you a replacement or refund. 100% Simple & Risk-Free process.

You may also like Don't Like These?
const TAG = 'spz-custom-painter-button-animation'; const MAX_ITERATION_COUNT = 99999999; const SITE = (window.C_SETTINGS && window.C_SETTINGS.routes && window.C_SETTINGS.routes.root) || ''; const ADD_TO_CART_ANIMATION_SETTING = `${SITE}/api/marketing_atmosphere_app/add_to_cart_btn_animation/setting`; class SpzCustomPainterButtonAnimation extends SPZ.BaseElement { /**@override */ static deferredMount() { return false; } /** @param {!SpzElement} element */ constructor(element) { super(element); /** @private {!../../src/service/xhr-impl.Xhr} */ this.xhr_ = SPZServices.xhrFor(this.win); /** @private {Object} */ this.data_ = null; /** @private {Element} */ this.addToCartButton_ = null; /** @private {boolean} */ this.productAvailable_ = true; /** @private {number} */ this.timerId_ = null; /** @private {number} */ this.animationExecutionCount_ = 0; /** @private {boolean} */ this.selectedVariantAvailable_ = true; /** @private {number} */ this.delay_ = 5000; /** @private {number} */ this.iterationCount_ = 5; /** @private {string} */ this.animationClass_ = ''; } /** @override */ isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } /** @override */ buildCallback() { this.productAvailable_ = this.element.hasAttribute('product-available'); this.selectedVariantAvailable_ = this.element.hasAttribute('selected-variant-available'); } /** @override */ mountCallback() { this.render_(); } /** @private */ render_() { if (!this.productAvailable_) { return; } this.fetch_().then((data) => { if (!data) { return; } this.data_ = data; this.animationClass_ = `painter-${data.animation_name}-animation`; this.iterationCount_ = data.animation_iteration_count === 'infinite' ? MAX_ITERATION_COUNT : data.animation_iteration_count; const animationDuration = 1; const animationDelay = data.animation_delay || 5; this.delay_ = (animationDuration + animationDelay) * 1000; this.handleButtonEffect_(); }); } /** * @param {JsonObject} data * @return {(null|Object)} * @private */ parseJson_(data) { try { return JSON.parse(data); } catch (e) { return null; } } /** * @return {Promise} * @private */ fetch_() { return this.xhr_.fetchJson(ADD_TO_CART_ANIMATION_SETTING).then((data) => { if (!data || !data.enabled) { return null; } return this.parseJson_(data.detail); }); } /** @private */ getAddToCartButton_() { this.addToCartButton_ = SPZCore.Dom.scopedQuerySelector( document.body, '[data-section-type="product"] [role="addToCart"], [data-section-type="product_detail"] [role="addToCart"], [data-section-type="product_detail"] [data-click="addToCart"], [data-section-type="product"] [data-click="addToCart"]' ); } /** @private */ restartAnimation_() { this.addToCartButton_.classList.remove(this.animationClass_); this.addToCartButton_./* OK */ offsetWidth; this.addToCartButton_.classList.add(this.animationClass_); this.animationExecutionCount_++; } /** @private */ clearTimer_() { this.win.clearInterval(this.timerId_); this.timerId_ = null; } /** @private */ setupTimer_() { this.timerId_ = this.win.setInterval(() => { this.restartAnimation_(); if (this.animationExecutionCount_ >= this.iterationCount_) { this.removeAnimationClass_(); this.clearTimer_(); } }, this.delay_); } /** @private */ restartTimer_() { if (this.animationExecutionCount_ >= this.iterationCount_) { this.removeAnimationClass_(); return; } this.setupTimer_(); } /** @private */ listenVariantChange_() { SPZUtils.Event.listen(self.document, 'dj.variantChange', (e) => { const selectedVariant = e.detail && e.detail.selected; if (!selectedVariant) { return; } const {available} = selectedVariant; if (this.selectedVariantAvailable_ !== available) { this.selectedVariantAvailable_ = available; this.clearTimer_(); if (available) { this.restartTimer_(); } } }); } /** @private */ removeAnimationClass_() { this.win.setTimeout(() => { this.addToCartButton_.classList.remove(this.animationClass_); }, 1000); } /** @private */ handleButtonEffect_() { this.getAddToCartButton_(); if (!this.addToCartButton_) { return; } if (this.selectedVariantAvailable_) { ++this.animationExecutionCount_; this.addToCartButton_.classList.add(this.animationClass_); if (this.iterationCount_ === 1) { this.removeAnimationClass_(); return; } this.setupTimer_(); } this.listenVariantChange_(); } } SPZ.defineElement(TAG, SpzCustomPainterButtonAnimation);