开发者问题收集

未捕获的类型错误:无法将属性“innerHTML”设置为 null

2017-05-25
2429

未捕获的类型错误:无法设置 null 的属性 innerHTML 未捕获的类型错误:无法设置 null 的属性 innerHTML 未捕获的类型错误:无法设置 null 的属性 innerHTML 未捕获的类型错误:无法设置 null 的属性 innerHTML 未捕获的类型错误:无法设置 null 的属性 innerHTML 未捕获的类型错误:无法设置 null 的属性 innerHTML

(function(){
    "use strict";
    
    var regalo = document.getElementById('regalo');
    
    document.addEventListener('DOMContentLoaded', function(){
        
        
   //campos de usuario
        var nombres = document.getElementById(nombre);   
        var apellido = document.getElementById('apellido');   
        var email = document.getElementById('email');   
        
        
        
    //campos pases
        
        var pase_dia = document.getElementById('pase_dia');
        var pase_completo = document.getElementById('pase_completo');
        var pase_dosdias = document.getElementById('pase_dosdias');
        
        
    //botones y divs
        
        
        var calcular = document.getElementById('calcular');        
        var errorDiv = document.getElementById('error');        
        var botonRegistro = document.getElementById('btnregistro');        
        var lista_productos = document.getElementById('lista-productoss');     
        
        
        
    //extras
        
        var camisas = document.getElementById('camisa_evento');
        var etiquetas = document.getElementById('etiquetas');
        
       
        calcular.addEventListener('click', calcularMontos);
        
        function calcularMontos(event){
            event.preventDefault();
            if(regalo.value === ''){
                alert("Debes elegir un regalo");
                regalo.focus();
            }else {
                var boletosDia = pase_dia.value,
                    boletosdosDias = pase_dosdias.value,
                    boletoCompleto = pase_completo.value,
                    cantCamisas = camisas.value,
                    cantEtiquetas = etiquetas.value;
                
                var totalPagar = (boletosDia * 30) + (boletosdosDias * 45) + (boletoCompleto * 50) + ((cantCamisas * 10)*.93) + (cantEtiquetas * 2) ;
                
                var listadoProductos = [];
                
                if (boletosDia >= 1 ){
                    listadoProductos.push(boletosDia + ' Pases por Dia');
                }
                
                 if (boletosdosDias >= 1 ){
                    listadoProductos.push(boletosdosDias + ' Pases por 2  Dias');
                }
                
                 if (boletoCompleto >= 1 ){
                    listadoProductos.push(boletoCompleto + ' Pases Completos');
                }
                
                if (cantCamisas >= 1 ){
                    listadoProductos.push(cantCamisas + ' Camisas');
                }
                
                if (cantEtiquetas >= 1 ){
                    listadoProductos.push(cantEtiquetas + ' Etiquetas');
                }
                
               
                
                lista_productos.innerHTML= '';
                
                for (var i = 0; i< listadoProductos.length; i++ ){
                    lista_productos.innerHTML += listadoProductos[i] + '<br/>';
                }
            }
            
        }
        
    });//DOM CONTENT LOADED
})();
(function(){
    "use strict";
    
    var regalo = document.getElementById('regalo');
    
    document.addEventListener('DOMContentLoaded', function(){
        
        
   //campos de usuario
        var nombres = document.getElementById(nombre);   
        var apellido = document.getElementById('apellido');   
        var email = document.getElementById('email');   
        
        
        
    //campos pases
        
        var pase_dia = document.getElementById('pase_dia');
        var pase_completo = document.getElementById('pase_completo');
        var pase_dosdias = document.getElementById('pase_dosdias');
        
        
    //botones y divs
        
        
        var calcular = document.getElementById('calcular');        
        var errorDiv = document.getElementById('error');        
        var botonRegistro = document.getElementById('btnregistro');        
        var lista_productos = document.getElementById('lista-productoss');     
        
        
        
    //extras
        
        var camisas = document.getElementById('camisa_evento');
        var etiquetas = document.getElementById('etiquetas');
        
       
        calcular.addEventListener('click', calcularMontos);
        
        function calcularMontos(event){
            event.preventDefault();
            if(regalo.value === ''){
                alert("Debes elegir un regalo");
                regalo.focus();
            }else {
                var boletosDia = pase_dia.value,
                    boletosdosDias = pase_dosdias.value,
                    boletoCompleto = pase_completo.value,
                    cantCamisas = camisas.value,
                    cantEtiquetas = etiquetas.value;
                
                var totalPagar = (boletosDia * 30) + (boletosdosDias * 45) + (boletoCompleto * 50) + ((cantCamisas * 10)*.93) + (cantEtiquetas * 2) ;
                
                var listadoProductos = [];
                
                if (boletosDia >= 1 ){
                    listadoProductos.push(boletosDia + ' Pases por Dia');
                }
                
                 if (boletosdosDias >= 1 ){
                    listadoProductos.push(boletosdosDias + ' Pases por 2  Dias');
                }
                
                 if (boletoCompleto >= 1 ){
                    listadoProductos.push(boletoCompleto + ' Pases Completos');
                }
                
                if (cantCamisas >= 1 ){
                    listadoProductos.push(cantCamisas + ' Camisas');
                }
                
                if (cantEtiquetas >= 1 ){
                    listadoProductos.push(cantEtiquetas + ' Etiquetas');
                }
                
               
                
                lista_productos.innerHTML= '';
                
                for (var i = 0; i< listadoProductos.length; i++ ){
                    lista_productos.innerHTML += listadoProductos[i] + '<br/>';
                }
            }
            
        }
        
    });//DOM CONTENT LOADED
})();
<section class="seccion contenedor">
        <h2>Registro de usuarios</h2>
        <form action="#" method="post" id="registro" class="registro">
            <div id="datos-usuarios" class="registro caja clearfix">
                <div class="campo">
                    <label for="nombre">Nombre</label>
                    <input type="text" id="nombre" name="nombre" placeholder="Tu Nombre">
                </div>

                <div class="campo">
                    <label for="apellido">Apellido</label>
                    <input type="text" id="apellido" name="apellido" placeholder="Tu Apellido">
                </div>
                <div class="campo">
                    <label for="email">Email</label>
                    <input type="text" id="email" name="email" placeholder="Tu Email">
                </div>
                <div id="error">
                
                </div>
            </div>
            <!--#Datos-usuarios-->

            <div id="paquetes" class="paquetes">
                <h3>Elige el numero de boletos</h3>

                <ul class="lista-precios clearfix">
                    <li>
                        <div class="tabla-precio">
                            <h3>Pase por dia (viernes)</h3>
                            <p class="numero">$30</p>
                            <ul>
                                <li>Bocadillos gratis</li>
                                <li>Todas las conferencias</li>
                                <li>Todos los talleres</li>
                            </ul>

                            <div class="orden">
                                <label for="pase-dia">Boletos deseados:</label>
                                <input type="number" min="0" id="pase_dia" sixe="3" placeholder="0">
                            </div>

                        </div>
                    </li>
                    <li>
                        <div class="tabla-precio">
                            <h3>Todos los Dias</h3>
                            <p class="numero">$50</p>
                            <ul>
                                <li>Bocadillos gratis</li>
                                <li>Todas las conferencias</li>
                                <li>Todos los talleres</li>
                            </ul>
                            <div class="orden">
                                <label for="pase-completo">Boletos deseados:</label>
                                <input type="number" min="0" id="pase_completo" sixe="3" placeholder="0">
                            </div>

                        </div>
                    </li>
                    <li>
                        <div class="tabla-precio">
                            <h3>Pase por 2 dias (viernes y sabado)</h3>
                            <p class="numero">$45</p>
                            <ul>
                                <li>Bocadillos gratis</li>
                                <li>Todas las conferencias</li>
                                <li>Todos los talleres</li>
                            </ul>
                            <label for="pase-dosdias">Boletos deseados:</label>
                            <input type="number" min="0" id="pase_dosdias" sixe="3" placeholder="0">

                        </div>
                    </li>
                </ul>
            </div>
            <!--#paquetes-->
            
            
            
            <div id="resumen" class="resumen">
               <h3>pago y extras</h3>
                <div class="caja clearfix">
                    <div class="extras">
                       
                        <div class="orden">
                            <label for="camisa_evento">Camisa del evento $10 <small>(promoción 7% de dto.)</small></label>
                            <input type="number" min="0" id="camisa_evento" size="3" placeholder="0">
                        </div><!--.orden--> 
                        
                        <div class="orden">
                            <label for="etiquetas">paquete de 10 etiquetas $2 <small>(HTML5, CSS3, JavaScript, Chrome)</small></label>
                            <input type="number" min="0" id="etiquetas" size="3" placeholder="0">
                        </div><!--.orden-->
                        
                        <div class="orden">
                           <label for="regalo">seleccione un regalo</label><br>
                           <select id="regalo" required>
                               <option value="">-- Seleccione un regalo --</option>
                               <option value="ETI">Etiquetas</option>
                               <option value="PUL">Pulseras</option>
                               <option value="PLU">Plumas</option>
                           </select>
                            
                        </div><!--.orden-->
                        
                        <input type="button" id="calcular" class="boton" value="calcular">
                        
                    </div><!--.extras-->
                    
                    <div class="total">
                        <p>Resumen</p>
                        <div class="lista-productos">
                            
                        </div>
                        <p>Total</p>
                        <div id="suma-total">
                            
                        </div>
                        <input type="submit" id="btnregistro" class="boton" value="Pagar">
                    </div><!--.Total-->
                </div><!--.Caja-->
            </div><!--.Resumen-->
2个回答

你有一个错字。额外的 S Tienes 错误提示。 Un extra "s"

var lista_productos = document.getElementById('lista-productoss');

应该是:debiera ser:

var lista_productos = document.getElementById('lista-productos');

此外,您的 HTML 将此 div 定义为 CLASS lista-productos...

<div class="lista-productos">
</div>

更改为

<div id="lista-productos">
</div>
SactoJosh
2017-05-25

不要使用 .innherHTML ,而只需更新变量即可。

.innerHTML 将用于 DOM 中的元素,但是,您使用的变量只是一个字符串,因此它无法找到您引用的元素,因为它只看到一个空字符串。有关 .innerHTML 的更多信息,您可以在 此处 查看。

更改:

lista_productos.innerHTML= '';
for (var i = 0; i< listadoProductos.length; i++ ){
    lista_productos.innerHTML += listadoProductos[i] + '<br/>';
}

更改为:

lista_productos = '';
for (var i = 0; i< listadoProductos.length; i++ ){
    lista_productos += listadoProductos[i] + '<br/>';
}
jkeys
2017-05-25