未捕获的类型错误:在输入单击时无法读取 null 的属性“样式”

Posted

技术标签:

【中文标题】未捕获的类型错误:在输入单击时无法读取 null 的属性“样式”【英文标题】:Uncaught TypeError: Cannot read property 'style' of null on Input click 【发布时间】:2021-08-03 20:31:36 【问题描述】:

我在下面提供了这个 DIV,基本上我试图通过单击按钮在它下面附加类似的行。由于我的行包含输入标签,所以当我单击附加的 div 输入框时,会出现错误

未捕获的类型错误:无法读取输入的 null 属性“样式”

            <tbody class="tableBody">
                <tr class="p-2" id="row-item">
                    <td id="modelName">
                        <div class="form-outline search-box">
                            <input type="text" id="form1" class="form-control" name="modelName[]" required />
                            <label class="form-label" for="form1">Model Name</label>
                            <div class="result"></div>
                        </div>
                    </td>
                    <td id="quntity">
                        <div class="form-outline">
                            <input type="number" min="1" id="qty" name="qty[]" class="form-control" required
                                autocomplete="off" />
                            <label class="form-label" for="qty">Quantity</label>
                        </div>
                    </td>
                    <td id="price-total" class="priceTotal">
                        <div class="form-outline">
                            <input type="number" id="totalprice" readonly name="totalprice[]" class="form-control"
                                required autocomplete="off" />
                            <input style="display: none;" type="number" name="category[]" id="category" value="" />
                        </div>
                    </td>
                    <td></td>
                </tr>
            </tbody>
            <tr>
                <td><button class="btn btn-secondary add-row">+</button></td>
                <td></td>
                <td></td>
                <td></td>
            </tr>

JS代码是

$(document).ready(function() 
    var add_button = $(".add-row"); //Add button ID

    var max_fields = 200; //maximum input boxes allowed
    var wrapper = $("#row-item"); //Fields wrapper
    //Content to clone
    var clone_content =
        '<tr class="p-2" id="row-item"> <td id="modelName"> <div class="form-outline search-box"> <input type="text" id="form1" class="form-control" name="modelName[]" required /> <label class="form-label"for="form1">Model Name</label><div class="result"></div></div></td><td id="quntity"><div class="form-outline"><input type="number"min="1"id="qty"name="qty[]"class="form-control"required autocomplete="off"/><label class="form-label"for="qty">Quantity</label></div></td><td id="price-total"class="priceTotal"><div class="form-outline"><input type="number"id="totalprice"readonly name="totalprice[]"class="form-control"required autocomplete="off"/><input style="display: none;"type="number"name="category[]"id="category"value=""/></div></td><td><button id="close">X</button></td></tr>';
    var x = 1; //initlal text box count

    $(add_button).on('click', function()  //on add input button click
        $('.tableBody').append(clone_content);
    );
      

变量clone_content 包含我要再次添加的 div 代码。

The Red Circle is the original Table row and yellow highlighted is the div which was added via js. But i don't know why it is missing borders of the input and when I click on the input box the error is shown in the console.log

【问题讨论】:

我没有收到您的代码错误 和@JohnTyner 一样,你是不是想在你的 JS 文件的任何地方改变 html 元素的样式? @thursday_dan 是的,我在最后一行添加了一个按钮。但我也尝试保持相同的 HTML 仍然显示错误。 @Kinglish 一旦你点击了通过JS添加的输入框,那么控制台就会出现错误。 您试图在代码中的哪个位置访问元素的样式?除非我错过了,否则我在您发布的示例中看不到 style 属性? 【参考方案1】:

错误是由于我使用的 CSS 框架造成的。如果我删除 CDN,它会完全正常工作。我不知道为什么会这样,但它现在可以工作了。

任何人都知道为什么让我知道。

【讨论】:

我已将样式表添加到 codepen here。我会检查您的加载顺序并确保您的所有引导程序组件都正确加载。

以上是关于未捕获的类型错误:在输入单击时无法读取 null 的属性“样式”的主要内容,如果未能解决你的问题,请参考以下文章

Bootstrap - 未捕获的类型错误:无法读取复选框单击时未定义的属性“单击”

未捕获的类型错误:无法读取 null 的属性“提交”以进行条带支付

未捕获的类型错误:无法读取 null 的属性“signIn”(在 localhost 上运行代码时!)

未捕获的类型错误:无法读取 null 的属性“setThemingColor”

未捕获的类型错误:无法读取 null 的属性(正在读取“addEventListener”)Chrome 扩展

未捕获的类型错误:无法读取 null 的属性“道具”