我正在获取[object object],但是我想在“ value”变量之前添加一个选中标记按钮

时间:2019-01-02 03:36:49

标签: javascript jquery html

我正在制作一个列表,并且所有内容都已添加到HTML上,但是现在正尝试通过单击按钮将其删除。我遇到的问题是在按钮前面。我相信我可以使用此代码段中未包含的逻辑将其删除,但是对如何创建按钮的任何帮助将不胜感激。

window.onload = function() {
//user clicked on the add button in the to-do field add that text into the to-do text
$('#add-to-do').on('click', function(event) {
    event.preventDefault();
    //assign variable to the value entered into the textbox
    var value = document.getElementById('to-do').value;  
    //test value
    console.log(value);
    //prepend values into the html and add checkmark, checkbox, and line break to make list
    var linebreak = "<br/>";
    var todoclose = $("<button>");

    console.log(todoclose);
    todoclose.attr("data-to-do", toDoCount);
    todoclose.addClass("checkbox");
    todoclose.text("☑");

    $("#to-dos").prepend(todoclose + value + linebreak);


});

下面是HTML

                <div class ="col-4">
                <!-- To Do List -->
                <form onsubmit= "return false;">
                    <span id = "todo-item" type = "text">
                    <h4>Add your Agenda Here</h4>
                    <input id ="to-do" type = "text">
                    <input id ="add-to-do" value = "Add Item" type = "submit">
                    </span>
                </form>
             <div id="to-dos"></div>
            </div>

1 个答案:

答案 0 :(得分:2)

错误在这里:

todoclose + value + linebreak

todoclose是一个对象,value是一个字符串,而linebreak是一个字符串。这意味着在该代码的第一部分中,您将添加一个带有字符串(todoclose)的对象(value)。

将对象添加到字符串时,JavaScript引擎将调用对象的toString方法将其首先转换为字符串,然后将结果添加到其他字符串。大多数对象上的toString方法会打印[object Object](不是很有用)。

要解决此问题,您可以一次添加一个(以相反的顺序),而不用+将它们加在一起:

$("#to-dos").prepend(linebreak);
$("#to-dos").prepend(value);
$("#to-dos").prepend(todoclose);