Vielseitigkeit ist unsere Stärke

Wir als Unternehmen bieten einmalig in der Region Abbruch- und Erdarbeiten, Hoch- und Tiefbau sowie Containerdienst und Entsorgung auf dem hauseigenen Recyclinghof an.

Abbruch Kathoefer 1

Abbruchservice

Wir erledigen den Abbruch und die Sanierung von Gebäuden, Restbauwerken sowie versiegelten und befestigten Flächen für Sie.

Container mieten in Rietberg bei Hermann Kathöfer GmbH – Absetzcontainer für zuverlässige Abfallentsorgung und flexiblen Containerdienst in Rietberg und Umgebung.

Containeranfrage

Nutzen Sie unseren Service und bestellen Sie über unser Anfrageformular schnell und einfach Abrollcontainer sowie Absetzmulden oder kontaktieren Sie uns via Whatsapp.

Deutschlandweit für Sie da

Der gute Ruf der Hermann Kathöfer GmbH hat sich mittlerweile weit über die Stadtgrenzen Rietbergs hinaus herum gesprochen. Wir garantieren aufgrund verschiedener fachspezifischer Zusatzqualifikationen unserer Mitarbeiter eine reibungslose und zügige Abwicklung eines jeden Auftrages.

0 +
Mitarbeiter
0 +
Jahre Erfahrung

Familienunternehmen seit mehr als 30 Jahren

Seit nunmehr drei Jahrzehnten steht der Name Hermann Kathöfer GmbH aus Rietberg für Erfahrung und Qualität am Bau. Einmalig in der Region bietet unser Unternehmen Abbruch- und Erdarbeiten, Hoch- und Tiefbau, Schrott & Metall sowie Containerdienst inkl. Entsorgung auf dem hauseigenen Recyclinghof an. Schnelligkeit und Flexibilität sind wir in der Vergangenheit für unsere Kunden ein Partner geworden, der die Bedürfnisse kennt, Anforderungen versteht und detaillierte Lösungen bis hin zu Komplettlösungen anbietet. Überzeugen Sie sich anhand dieser Homepage, dass Sie hier den richtigen Partner für Ihr Bauvorhaben gefunden haben.

WE "KEHR" for YOU

Unsere neue Kehrmaschine für Sie im Einsatz

Nutzen Sie unseren Service und kontaktieren Sie unseren zuständigen Mitarbeiter.

News

Erhalten Sie einen Einblick in unsere Geschäftsfelder und informieren Sie sich über aktuelle Projekte.

Kathöfer Wertstoff GmbH in Rietberg.

Entsorgung & Recycling

Wir bieten maßgeschneiderte Lösungen für Privat- und Gewerbekunden. Wählen Sie unten Ihren Bereich aus, um mehr über unsere Dienstleistungen zu erfahren.

) | Bedingung: Gesamte Website * * Erwartete Struktur: * Button-Widget -> Erweitert > CSS-Klassen: bewerbungsformular * -> Erweitert > Attribute: data-stelle|Schlepperfahrer / Maschinist * Formular -> Hidden Field mit ID: stelle (=> input#form-field-stelle) */ (function () { 'use strict'; var TRIGGER_SELECTOR = '.bewerbungsformular'; var DATA_ATTRIBUTE = 'data-stelle'; var FIELD_ID = 'form-field-stelle'; var FIELD_NAME = 'form_fields[stelle]'; var DEBUG = false; // auf true setzen zum Testen (Konsole) var currentStelle = ''; var retryTimer = null; function log() { if (DEBUG && window.console) { console.log.apply(console, ['[Bewerbung]'].concat([].slice.call(arguments))); } } /** Alle Instanzen des Hidden Fields einsammeln (Popup kann mehrfach im DOM liegen). */ function getFields() { var list = []; var byName = document.querySelectorAll('input[name="' + FIELD_NAME + '"]'); var byId = document.querySelectorAll('#' + FIELD_ID + ', [id^="' + FIELD_ID + '"]'); [].forEach.call(byName, function (el) { if (list.indexOf(el) === -1) { list.push(el); } }); [].forEach.call(byId, function (el) { if (el.tagName === 'INPUT' && list.indexOf(el) === -1) { list.push(el); } }); return list; } /** Wert in alle gefundenen Felder schreiben. Gibt true zurück, wenn mindestens eins befüllt wurde. */ function fillFields(value) { if (!value) { return false; } var fields = getFields(); if (!fields.length) { return false; } fields.forEach(function (field) { if (field.value !== value) { field.value = value; field.dispatchEvent(new Event('input', { bubbles: true })); field.dispatchEvent(new Event('change', { bubbles: true })); } }); log('Feld befüllt:', value, '(' + fields.length + 'x)'); return true; } /** * Elementor rendert das Popup erst beim Öffnen bzw. per AJAX. * Deshalb wird nach dem Klick bis zu 6 Sekunden lang wiederholt versucht zu befüllen. */ function fillWithRetry(value) { if (retryTimer) { clearInterval(retryTimer); retryTimer = null; } if (!value) { return; } if (fillFields(value)) { return; } var attempts = 0; retryTimer = setInterval(function () { attempts++; if (fillFields(value) || attempts > 60) { // 60 x 100ms = 6s clearInterval(retryTimer); retryTimer = null; } }, 100); } /** Wert des geklickten Buttons ermitteln – Attribut kann am Wrapper oder am inneren Element sitzen. */ function resolveStelle(target) { if (!target || !target.closest) { return ''; } var holder = target.closest('[' + DATA_ATTRIBUTE + ']'); if (holder) { return holder.getAttribute(DATA_ATTRIBUTE) || ''; } var trigger = target.closest(TRIGGER_SELECTOR); if (trigger) { var inner = trigger.querySelector('[' + DATA_ATTRIBUTE + ']'); if (inner) { return inner.getAttribute(DATA_ATTRIBUTE) || ''; } } return ''; } /* 1. Klick auf den Bewerbungs-Button (Capture-Phase) */ document.addEventListener('click', function (e) { var target = e.target; if (!target || !target.closest) { return; } if (!target.closest(TRIGGER_SELECTOR)) { return; } var value = resolveStelle(target); if (!value) { log('Kein ' + DATA_ATTRIBUTE + '-Wert am geklickten Button gefunden.'); return; } currentStelle = value; log('Klick erkannt, Stelle =', currentStelle); fillWithRetry(currentStelle); }, true); /* 2. Offizielles Elementor-Pro-Popup-Event (seit Pro 2.7) */ function bindPopupEvents($) { $(document).on('elementor/popup/show', function () { log('elementor/popup/show'); fillFields(currentStelle); setTimeout(function () { fillFields(currentStelle); }, 150); setTimeout(function () { fillFields(currentStelle); }, 600); }); // Nach erfolgreichem Absenden setzt Elementor das Formular zurück -> Wert neu setzen $(document).on('submit_success', function () { setTimeout(function () { fillFields(currentStelle); }, 300); }); } if (window.jQuery) { bindPopupEvents(window.jQuery); } else { document.addEventListener('DOMContentLoaded', function () { if (window.jQuery) { bindPopupEvents(window.jQuery); } }); } /* 3. Sicherheitsnetz: Popup-Markup wird nachträglich ins DOM geschoben. */ if (window.MutationObserver) { var observer = new MutationObserver(function (mutations) { if (!currentStelle) { return; } for (var i = 0; i < mutations.length; i++) { if (mutations[i].addedNodes && mutations[i].addedNodes.length) { fillFields(currentStelle); break; } } }); observer.observe(document.documentElement, { childList: true, subtree: true }); } })();