Coisas De Web

Nome:
Local: Rio de Janeiro, RJ, Brazil

Que perguntinha hein?! Mas vamos lá, adoro estudar assuntos relacionados à web, sempre que posso aprendo uma tecnologia, técnica ou linguagem nova. Tento sempre ver quais são as tendências e acompanha-las, enfim eu sou um eterno aprendiz. Deixando o lado profissional, entrando no lado pessoal, sou uma pessoa super gente-boa (pelo menos eu me acho. rs), adoro curtir a night, sair com os amigos, fazer novas amizades e viajar (tem coisa melhor do que isso?) Acho que você já está sabendo demais sobre mim. Fuiii...

sábado, 29 de setembro de 2007

O Operador Ternario

Olá navegantes, não sei se vocês já ouviram falar no operador ternário, é algo bem simples, mas que volta e meia esqueço a sintaxe, então resolvi coloca-lá aqui, existe lugar melhor?
Se você não conhece operador ternário é uma forma compacta de fazer um if/else, claro que ele não serve para todo tipo de if/else que você ver por aí (pelo fato dele ser compacto),tem grande serventia para aquele tipo que se testa um valor e dependendo da resposta uma outra variável recebe um ou outro valor. Ex:

function tipoNum ($num) {
if ($num%2) {
$tipo = "Número Ímpar";
} else {
$tipo = "Número Par";
}
return $tipo;
}


No código acima nada demais, verifico se o número é par ou ímpar de acordo com o resto da divisão e uma variável recebe o texto dizendo se ele é par ou ímpar.(obs: não sei se você sabe, mas no teste acima verifico se o valor é verdadeiro e não um número, através do resultado da operação que me retorna 0 ou 1, que também é considerado um valor booleano, apesar do resultado ser um número. Sempre que se souber o valor retornado será um dos dois, posso fazer um teste lógico, sabendo que 1 corresponde à true e 0 à false).

Agora o mesmo código com o operador ternário.

function tipoNum ($num) {
$tipo = ($num%2) ? "Número Ímpar" : "Número Par";
return $tipo;
}


Muito mais simples né?!
Nota Mental: Bom, agora já está anotado e quando esquecer a sintaxe é só ir pro meu blog. XD

fuiii...

Marcadores: , , ,

terça-feira, 25 de setembro de 2007

Inserir Elementos Dinamicamente na tabela

Um post rápido, Essa semana tentei fazer algo simples, mas levei um suor pra fazer, mas era algo bem simples de ser resolvido, então você pode estar passando por isso, então aqui venho para esclarecer e até porque se no futuro eu esquecer, posso consultar este blog e ter a resposta XD. Estava, eu fazendo um carregamento dinâmico de uma tabela aqui na empresa, montei a tabela bonitinha e parti para o DHTML, para fazer a estrutura da tabela dinâmica, nesta tabela o carregamento se dava de acordo com a necessidade do usuário e era criado as linhas da tabela de forma que o usuário desejar sem e não colocando sempre na última posição, para essa questão simples, fui utilizar a função insertBefore, para minha surpresa isso retornava o seguinte erro:

Nó não foi encontrado

Vi, li e reli a minha tabela e não consegui encontrar o erro, a estrutura da minha tabela estava mais-ou-menos assim:


<table id="myTable">
<tbody>
<tr id="row1"><td>row1col1</td><td> row1col2</td></tr>
<tr id="row2"><td>row2col1</td><td> row2col2</td></tr>
</tbody>
</table>


e com o seguinte código tentava adicionar uma linha na tabela:

var newRow = document.createElement('tr');
var row2 = document.getElementById('row2');
var aqui = document.getElementById('myTable').insertBefore(newRow,row2);


E nada de dar certo, fui naquele-que-tudo-sabe (leia-se:Google), ainda sim não tinha encontrado uma resposta satisfatória, até que entrei em um site gringo, que tinha um código muito semelhante ao meu, só que o dele funcionava! (Mas devo confessar que nem ele mesmo sabia porque estava funcionando, pois ele disse que para resolver o problema era necessário fazer o clone de um elemento, no caso um tr, e depois fazer a inserção, essa informação não procede!) Até que descobri o meu erro, mas antes de escrever onde estava errando, gostaria de perguntar à você, se com as informções acima você consegue saber onde estava errando, gostaria que arriscasse um palpite, não custa nada, ninguém nasceu sabendo, então não leia as linhas abaixo e dê o seu palpite, depois disso volte para ver a resposta. (não vale ver a resposta antes, hein) Estou confiando na sua honestidade. rs















Que rufem os tambores! Boa Sorte! XD
O erro era que estava tentando fazer a inserção do elemento tr no elemento table e não pode ser feito dessa forma, tenho que fazer a inserção no tbody, ou seja, passei a id da table, para tbody. Uma questão simples de ser resolvida!













fuiii...

Marcadores: , ,

terça-feira, 11 de setembro de 2007

This Ou That - Qual Usar

Desculpem a demora nos posts, mas minha vida está muito corrida, vários projetos, várias coisas pra fazer e o dia infelizmente só tem 24 hrs. Mas como eu sempre digo (ou pelo menos disse uma vez) Vamos embora que o tempo ruge e a sapucaí é grande.

Pois bem, gosto muito de Javascript, mas ele tem certas falhas de implementação (ou assim penso), que não são muito legais, hoje iremos falar do problema com a propriedade this:


function minhaClasse () {
this.metodo1 = function() {
this.meuValor = 5;
}

metodo2 = function() {
return 10;
}
}


Essa é a forma que costumo implementar classes, não que seja a melhor, mas é a forma que gosto de fazer, existem diversas formas, cabe a você, escolher a que mais agradar. Como visto acima, tenho dois métodos:

Metodo 1: Vê-se que a função tem um this na frente o que significa que o método é público. O método seta a variável meuValor um valor de 5 essa variável como pode-se observar ela também é publica, this na frente da variável,(fora do objeto, pode-se pegar o valor dela).

Metodo 2: Essa função não tem o this na frente, ou seja, ela é privada. Quando ela é chamada apenas retorna o valor 10.

Até aqui, Neves, não tem nada demais, o problema vem agora:


function minhaClasse () {
this.metodo1 = function() {
return 10;
}

metodo2 = function() {
this.meuValor = 5;
}
}


Acima inverti o conteúdo das funções, porém não inverti a "indentidade" (metodo1 -> publico; metodo2 -> privado) e por isso daria erro ("função meuValor não identificada"), pois segundo a especificação da ECMAScript, métodos privados não podem chamar métodos, variáveis, ou seja lá o que for, públicos. Para fazer com que o exemplo acima funcione é necessário utilizar um método privilegiado (detalhes, sobre isso em um próximo post).

Resolvendo - Irá ser necessário criar uma variável global à classe que irá receber o valor this, que comumente é chamado de that e toda vez que tivermos uma função privada e necessitarmos utilizar algo público, ao invés de usarmos o this, utilizaremos o that. Exemplificando, pois com essa explicação até eu me enrolei:


function minhaClasse () {
var that = this;
this.metodo1 = function() {
return 10;
}

metodo2 = function() {
that.meuValor = 5;
}
}


Com essa simples variável é possível resolver o problema!

Espero que isso seja útil para alguém, pois para mim foi muito. Vou ver se no próximo post continuo com algo de objeto.

Fuiii...

Marcadores: , ,