Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Periscuelo

[Resolvido] removeChild ie8

Recommended Posts

Boa Tarde galera do imasters.

 

Estou eu aqui brincado com javascript e tentando fazer uns elementos dinamicos.

FireFox e Google Chrome são uma maravilha.

 

O problema (sempre foi e sempre será) é o IE. ^_^

 

O Código ta bem simples e se vocês copiarem ele e salvar um html,

poderão ver como ele funciona no firefox e para que server.

 

<html>
    <head>
        <title>teste</title>
        <script language="javascript">
            count = 0;
            function addInput() {
                div = document.getElementById('inputs');
                count++;
                var new_div = document.createElement('div');
                new_div.id = 'div_input'+count;
                var new_label = document.createElement('label');
                var new_text = document.createTextNode('Diretório ');
                new_label.appendChild(new_text);
                new_div.appendChild(new_label);
                var new_input = document.createElement('input');
                new_input.type = 'text';
                new_input.name = 'dir[]';
                new_input.size = '45';
                new_div.appendChild(new_input);
                var new_button = document.createElement('input');
                new_button.type = 'button';
                new_button.name = 'rmv';
                new_button.value = '-';
                new_button.setAttribute('onClick','rmvInput(\'div_input'+count+'\')');
                new_div.appendChild(new_button);
                var new_break = document.createElement('div');
                new_div.appendChild(new_break);
                div.appendChild(new_div);
            }
            function rmvInput(inputs) {
                div = document.getElementById('inputs');
                input = document.getElementById(inputs);
                div.removeChild(input);
            }
        </script>
    </head>
    <body>
        <div style="text-align: center; width: 100%">
            <div style="width: 65%; *width: 30%;">
                <form id="teste" action="thumb.php" method="POST">
                    <div align="right">
                        Diretório <input type="text" name="dir[]" size="44" value="" /><input type="button" name="add" value="+" onClick="addInput();" /><br />
                        <div id="inputs"></div>
                        Tipo <select name="type" style="width: 329px; *width: 327px;">
                                <option value="" selected="selected"></option>
                                <option value="png">PNG</option>
                                <option value="gif">GIF</option>
                                <option value="jpg">JPG</option>
                                <option value="bmp">BMP</option>
                                <option value="wbmp">WBMP</option>
                             </select><br />
                        Largura <input type="text" name="x" size="50" value="" /><br />
                        Altura <input type="text" name="y" size="50" value="" /><br /><br />
                        <input type="submit" name="tratar" value="Tratar Imagens" />
                        <input type="reset" value="Limpar Campos" />
                    </div>
                </form>
            </div>
        </div>
    </body>
</html>
Já utilizei a ferramenta para desenvolvedores do IE e quando chamo a função rmvInput ele remove os inputs da tela.

Porém quando clico no botão ele num faz nada, ou seja minha função esta correta porém não sei por qual motivo a mesma não esta sendo carregada ao clicar no botão.

 

ou seja o setAttribute não rola no ie.

 

Alguém sabe alguma solução para isso?

 

já tentei var.onclick = function mas como são varios inputs ele só remove 1 :(

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Periscuelo,

 

O ie é cheio dessas coisas mesmo, na verdade o erro pode estar em vários pontos.

um deles é que você não declarou as variaveis na função de remoção (o ie exige)

 

mas você pode fazer de uma forma muito mais simples, sem precisar da função rmvInput, já que o que você quer é apenas excluir a linha atual.

 

// essa linha
new_button.setAttribute('onclick','rmvInput(\'div_input'+count+'\')');

// você troca por essas
new_button.onclick = function() {
    this.parentNode.parentNode.removeChild(this.parentNode)
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo Jair aprendi mais uma. Sou péssimo em javascript :P

 

ficou assim:

 

<script language="javascript">
            function addInput() {
                div = document.getElementById('inputs');
                var new_div = document.createElement('div');
                var new_label = document.createElement('label');
                var new_text = document.createTextNode('Diretório ');
                new_label.appendChild(new_text);
                new_div.appendChild(new_label);
                var new_input = document.createElement('input');
                new_input.type = 'text';
                new_input.name = 'dir[]';
                new_input.size = '45';
                new_div.appendChild(new_input);
                new_button = document.createElement('input');
                new_button.type = 'button';
                new_button.value = '-';
                new_button.onclick = function () { this.parentNode.parentNode.removeChild(this.parentNode) };
                new_div.appendChild(new_button);
                var new_break = document.createElement('div');
                new_div.appendChild(new_break);
                div.appendChild(new_div);
            }
        </script>
Uma unica função ja faz tudo.

 

resolvido http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

 

Muito obrigado amigo Jair.

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.