Przekazanie stylu (RMP)

Przekazanie stylu (RMP)
S2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 91
0

W jaki sposób przekazać opcje do headera. Próbuję tak ale coś nie działa

Kopiuj
var options = new createHeader (#C0C0C0);

function createHeader(color) {
        this.style.color = color;
            return "<h2>Header</h2>";
	
        } 

Dodam, że jest to reaveling module pattern

DE
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1788
2

Ten kod nie ma nic wspólnego z Revealing Module Pattern. RMP polega na tym, że wykorzystując IIFE i closures możesz kontrolować dostęp do funkcji/zmiennych zwracając tylko publiczne API.

Kopiuj
var myRevealingModule = (function () {
    var privateVar = 'foo';

    function setVar(newVar) {
      log('setting var!');
      privateVar = newVar;
    }

    function getVar() {
      log('getting var!');
      return privateVar;
    }

    function log(action) {
      console.log('I am ' + action);
    }

    return {
      setVar: setVar,
      getVar: getVar
    };
})();

console.log(myRevealingModule.getVar());
// I am getting var!
// foo

myRevealingModule.setVar('bar');
// I am setting var!

console.log(myRevealingModule.getVar());
// I am getting var!
// bar

console.log(myRevealingModule.privateVar);
// undefined
console.log(myRevealingModule.log('trying to access private member'));
// Uncaught TypeError: myRevealingModule.log is not a function(…)

Twój kod ma kilka dużych błędów. Po pierwsze "funkcja-konstruktor" powinna byc pisana z wielkiej litery, a drugie this.style jest undefined, a na undefined nie możesz ustawic property color.

S2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 91
0

to jak to poprawnie zapisać

DE
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1788
1
Kopiuj
function createHeader(color) {
	var header = document.createElement('h2');
	header.innerHTML = 'Header';
	header.style.color = color;

	return header;
} 

var header = createHeader('#C0C0C0');

Nie ma potrzeby użycia new dla samego użycia new..

Jeżeli chcesz dodać ten gdzieś na stronie to musisz zrobić tak:

Kopiuj
var container = document.querySelector('body'); 
container.appendChild(header);

JSFiddle

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.