Przekazanie stylu (RMP)

Przekazanie stylu (RMP)
S2
  • Rejestracja:ponad 9 lat
  • Ostatnio:około 6 lat
  • 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:ponad 9 lat
  • Ostatnio:11 miesięcy
  • 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.

edytowany 3x, ostatnio: Desu
Maciej Cąderek
Maciej Cąderek
Te nawiasy okalające IIFE niepotrzebne ;)
DE
Te obejmujące function?
Maciej Cąderek
Maciej Cąderek
Tak, tam kompilator wie, że to jest expression już po tym, że jest to przypisanie. No chyba, że jakieś stare przeglądarki tego nie ogarniają.
DE
Hmm.. wiedzieć może i wie, ale czy bez nawiasów jest czytelniej?
Maciej Cąderek
Maciej Cąderek
No to jest argument, rzeczywiście bez nawiasów trzeba patrzeć na koniec wyrażenia by ogarnąć co się dzieje.
S2
  • Rejestracja:ponad 9 lat
  • Ostatnio:około 6 lat
  • Postów:91
0

to jak to poprawnie zapisać

DE
@spin2015, zdefiniuj co chcesz zrobić, to zobaczymy jak to poprawić. Na moje oko wygląda to trochę jak gdybyś chciał zmienić kolor elementu header?
S2
tak wlasnie ma byc
DE
  • Rejestracja:ponad 9 lat
  • Ostatnio:11 miesięcy
  • 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

edytowany 4x, ostatnio: Desu
Zobacz pozostałe 3 komentarze
DE
@spin2015 Co Ty próbujesz zrobić? Bo widzę, że nie bardzo znasz js, a kombinujesz jak koń pod góre.
S2
sądziłem że wyswietli sie header w innym kolorze
DE
Wyświetli się, jak zrobisz to poprawnie.
S2
ok juz zrobilem, dzieki za pomoc

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.