vikcch Posted January 30, 2018 at 05:32 PM Report #609157 Posted January 30, 2018 at 05:32 PM boas, Tenho esta function que é chamada quando crio um novo elemento (span), e tem como parametro esse novo elemento que criei (span): function selectColor(e) { myDataToSave.colorID = $(e).data("id"); //$("span#selected-color").css("background-color", e.style.backgroundColor); // TypeError: e.style is undefined $("span#selected-color").css("background-color", $(e).css('backgroundColor')); } quando tento mudar o background-color de outra span para o background-color da span que estou a passar pelo parametro (e), só consigo mudar através de jquery, com js não consigo, dá o erro que mostra em cima: TypeError: e.style in undefined Qual o motivo? Estou a criar a span assim: $('<span/>', { id: objLabels.IdPreFix + objResult.id, // ex: 'category_' + '1' class: objLabels.htmlClass, title: objResult.name, text: objResult.name }).appendTo(objLabels.append); var spanID = 'span#' + objLabels.IdPreFix + objResult.id; $(spanID).data("id", objResult.id); if (objResult.hasOwnProperty('hex')) { $(spanID).css("background-color", objResult.hex); $(spanID).html(" "); } $(spanID).click(function () { window[objLabels.functionName]($(spanID)); }); // chamar function com o nome em string window[objLabels.functionName]($(spanID)); Outra coisa, é como posso inserir logo valores no atributo data quando crio a span? $(spanID).data("id", objResult.id); // não ter esta linha $('<span/>', { // ... data: 'id' + objResult.id // inserir logo o valor aqui }).appendTo(objLabels.append); Obrigado desde já!
tiago.f Posted January 30, 2018 at 05:38 PM Report #609159 Posted January 30, 2018 at 05:38 PM Olá vikcch, $(e) é diferente de apenas ‘e’ usa os inspector de JavaScript no browser para veres a diferença. Provavelmente se fizeres e[0].style ja deve dar... mas só testando mesmo.
vikcch Posted January 30, 2018 at 05:47 PM Author Report #609160 Posted January 30, 2018 at 05:47 PM Obrigado por postares!! Assim já deu... mas a agora quando clico noutra span criada antes com onclick="selectColor(this);" dá o erro: TypeError: e[0] is undefined Podes explicar melhor o que está a acontecer? E a outra duvida sabes?
tiago.f Posted January 30, 2018 at 06:02 PM Report #609161 Posted January 30, 2018 at 06:02 PM (edited) #> document.getElementById("elLogo"); <a id="elLogo" href="https://www.portugal-a-programar.pt/" accesskey="1"> #> $("#elLogo") Object { 0: a#elLogo, length: 1, context: HTMLDocument https://www.portugal-a-programar.pt/, selector: "#elLogo" } #> $("#elLogo")[0] <a id="elLogo" href="https://www.portugal-a-programar.pt/" accesskey="1"> Repara no exemplo acima. Quando usas $(..) para "obter" um elemento, de facto obtens um array de elementos (que pode ter apenas um elemento => o [0]) Agora tudo depende do que é passado no parametro da tua função (selectColor). Chamas selectColor(document.getElementById("selected-color")) ou selectColor($("span#selected-color")) ? dependendo do caso a tua variavel 'e' será de um tipo diferente. No caso do "selectColor(this)", só mesmo percebendo onde está esta chamada...e o que é o "this" ... ? EDIT: se queres aceder ao objecto DOM, usas $(xpto)[0] se usares apenas $(xpto) estás a aceder ao objecto jQuery, e aí deves usar funções jQuery, como por exemplo $(xpto).css(...) Edited January 30, 2018 at 06:04 PM by tiago.f 1 Report
vikcch Posted January 30, 2018 at 07:08 PM Author Report #609163 Posted January 30, 2018 at 07:08 PM o this refere-se ao próprio elemento (span)... para dentro da função ter acesso a parametro.style.backgroundColor; crio as outras spans com php e altero os valores nas chavetas $element = '<span id="cor_{0}" class="color-picker" style="background-color:{1};" title="{2}" onclick="selectColor(this);" data-id="{0}"> </span>'; Ok, obrigado, acho que já percebi... se quiser usar o parametro.style.backgroundColor tenho que passar como parametro o primeiro elemento do array na outra função onde crio a span com jquery
tiago.f Posted January 30, 2018 at 07:32 PM Report #609164 Posted January 30, 2018 at 07:32 PM Exactamente! de qq modo, já que estás a usar jquery, porque não usares pra tudo....?
vikcch Posted January 30, 2018 at 07:58 PM Author Report #609165 Posted January 30, 2018 at 07:58 PM vou usar e tenho usado... mas só comecei agora.... nem li a documentação nem nada... foi mais só procurar o que precisava e pronto... depois é normal ter estas duvidas lol
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now