Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我能';我的待办事项清单没有正常工作_Javascript_Html - Fatal编程技术网

Javascript 我能';我的待办事项清单没有正常工作

Javascript 我能';我的待办事项清单没有正常工作,javascript,html,Javascript,Html,由于某种原因,我的待办事项列表无法正常工作。首先,我有一个名为“list”的全局变量,它存储:document.getElementById('GList')“Glist”是我拥有的有序列表元素的id。然后,我有一个id为“goal”的文本区域和一个名为AddGoal()的函数。正如您将在下面看到的,该函数所做的第一件事是获取id为“goal”的textarea的值,并将其存储到一个名为“goal”的变量中。另一个变量被创建为“entry”,它存储一个创建的li元素,如var entry=doc

由于某种原因,我的待办事项列表无法正常工作。首先,我有一个名为“list”的全局变量,它存储:
document.getElementById('GList')“Glist”是我拥有的有序列表元素的id。然后,我有一个id为“goal”的文本区域和一个名为
AddGoal()
的函数。正如您将在下面看到的,该函数所做的第一件事是获取id为“goal”的textarea的值,并将其存储到一个名为“goal”的变量中。另一个变量被创建为“entry”,它存储一个创建的li元素,如
var entry=document.createElement('li')
此变量“entry”也使用
entry.setAttribute
赋予属性。它有一个类和一个类名“MyList”。下面的代码是,我在文本区域输入文本,文本被添加到我的列表中,一切正常,直到我尝试将另一项添加到列表中。添加另一项后,它将替换第一项并添加其他li元素,但所有元素都包含相同的替换文本。谢谢你的帮助

函数的最后一部分最终将在textarea中键入的文本添加到我的有序列表和类为“MyList”的
li
元素中

这是我尝试用类“MyList”获取li元素,并使其innerHTML成为一个
p
元素,该元素带有一个类,该类将向其添加我想要的图像,再加上一个
div
和一个类名为“goalTxt”将包含
textarea
元素文本的变量goal包装起来,我将目标变量包装成
div
类的原因是为了确保它在CSS中始终处于某个位置

document.getElementsByClassName('MyList')[0].innerHTML = "<p class='bulletp'></p>" + "   <div class='goalTxt'>" + goal + "</div>";
document.getElementsByClassName('MyList')[0]。innerHTML=“

”+“”+goal+”;
以下是完整的代码:

<style>
.bulletp {
    position:relative;
    top:-2px;
    left:5px;
    height: 30px;
    width: 20px;
    background-image:url('images/point_03.png');
}
</style>
<ol id="GList"></ol>
<textarea id="goal"></textarea> 
<script>
var list = document.getElementById('GList');

function AddGoal() {
    var goal = document.getElementById('goal').value;
    var entry = document.createElement('li');
    entry.setAttribute("class", "MyList");
    entry.appendChild(document.createTextNode(goal));
    list.appendChild(entry);
    document.getElementsByClassName('MyList')[0].innerHTML = "<p class='bulletp'></p>" +
        "<div class='goalTxt'>" + goal + "</div>";
}
</script>
<input type='button' onclick='AddGoal()' value='Submit' />

.bulletp{
位置:相对位置;
顶部:-2px;
左:5px;
高度:30px;
宽度:20px;
背景图片:url('images/point_03.png');
}
var list=document.getElementById('GList');
函数AddGoal(){
var-goal=document.getElementById('goal').value;
var entry=document.createElement('li');
entry.setAttribute(“类”、“MyList”);
entry.appendChild(document.createTextNode(目标));
列表。追加子项(条目);
document.getElementsByClassName('MyList')[0]。innerHTML=“

”+ “+目标+”; }
您正在使用
getElementsByClassName('MyList')[0]进行更新。innerHTML
[0]
意味着它将始终使用
class='MyList'
更新第一个元素,因此您的第一个
li
值也将得到更新

你根本不需要那条线。把它拿走。这是一个样本。我已经注释掉了整行

编辑:或者,如果您希望为所有
li
实现以下结构,请使用此选项

预期结构:

<li class="MyList">
    <p class="bulletp"></p><div class="goalTxt">abcd</div>
</li>
function AddGoal() {
    var goal = document.getElementById('goal').value;
    var entry = document.createElement('li');
    entry.setAttribute("class", "MyList");

    var bulletp = document.createElement('p'); // to add <p> tag
    bulletp.setAttribute("class", "bulletp");
    entry.appendChild(bulletp);

    var goalTxt = document.createElement('div'); // to add <div> tag
    goalTxt.setAttribute("class", "goalTxt");
    goalTxt.appendChild(document.createTextNode(goal));

    entry.appendChild(goalTxt);
    list.appendChild(entry);
   //console.log(list.innerHTML);

}
  • abcd
  • 对应代码:

    <li class="MyList">
        <p class="bulletp"></p><div class="goalTxt">abcd</div>
    </li>
    
    function AddGoal() {
        var goal = document.getElementById('goal').value;
        var entry = document.createElement('li');
        entry.setAttribute("class", "MyList");
    
        var bulletp = document.createElement('p'); // to add <p> tag
        bulletp.setAttribute("class", "bulletp");
        entry.appendChild(bulletp);
    
        var goalTxt = document.createElement('div'); // to add <div> tag
        goalTxt.setAttribute("class", "goalTxt");
        goalTxt.appendChild(document.createTextNode(goal));
    
        entry.appendChild(goalTxt);
        list.appendChild(entry);
       //console.log(list.innerHTML);
    
    }
    
    函数AddGoal(){
    var-goal=document.getElementById('goal').value;
    var entry=document.createElement('li');
    entry.setAttribute(“类”、“MyList”);
    var bulletp=document.createElement('p');//添加标记
    bulletp.setAttribute(“类”、“bulletp”);
    条目。追加子条目(bulletp);
    var goalTxt=document.createElement('div');//添加标记
    setAttribute(“类”、“goalTxt”);
    appendChild(document.createTextNode(goal));
    条目.appendChild(goalTxt);
    列表。追加子项(条目);
    //log(list.innerHTML);
    }
    

    注意:我强烈建议不要在
  • 标记内使用
    标记。

    您正在使用
    GetElementsByCassName('MyList')[0]进行更新。innerHTML
    [0]
    意味着它将始终使用
    class='MyList'
    更新第一个元素,因此您的第一个
    li
    值也将得到更新

    你根本不需要那条线。把它拿走。这是一个样本。我已经注释掉了整行

    编辑:或者,如果您希望为所有
    li
    实现以下结构,请使用此选项

    预期结构:

    <li class="MyList">
        <p class="bulletp"></p><div class="goalTxt">abcd</div>
    </li>
    
    function AddGoal() {
        var goal = document.getElementById('goal').value;
        var entry = document.createElement('li');
        entry.setAttribute("class", "MyList");
    
        var bulletp = document.createElement('p'); // to add <p> tag
        bulletp.setAttribute("class", "bulletp");
        entry.appendChild(bulletp);
    
        var goalTxt = document.createElement('div'); // to add <div> tag
        goalTxt.setAttribute("class", "goalTxt");
        goalTxt.appendChild(document.createTextNode(goal));
    
        entry.appendChild(goalTxt);
        list.appendChild(entry);
       //console.log(list.innerHTML);
    
    }
    
  • abcd
  • 对应代码:

    <li class="MyList">
        <p class="bulletp"></p><div class="goalTxt">abcd</div>
    </li>
    
    function AddGoal() {
        var goal = document.getElementById('goal').value;
        var entry = document.createElement('li');
        entry.setAttribute("class", "MyList");
    
        var bulletp = document.createElement('p'); // to add <p> tag
        bulletp.setAttribute("class", "bulletp");
        entry.appendChild(bulletp);
    
        var goalTxt = document.createElement('div'); // to add <div> tag
        goalTxt.setAttribute("class", "goalTxt");
        goalTxt.appendChild(document.createTextNode(goal));
    
        entry.appendChild(goalTxt);
        list.appendChild(entry);
       //console.log(list.innerHTML);
    
    }
    
    函数AddGoal(){
    var-goal=document.getElementById('goal').value;
    var entry=document.createElement('li');
    entry.setAttribute(“类”、“MyList”);
    var bulletp=document.createElement('p');//添加标记
    bulletp.setAttribute(“类”、“bulletp”);
    条目。追加子条目(bulletp);
    var goalTxt=document.createElement('div');//添加标记
    setAttribute(“类”、“goalTxt”);
    appendChild(document.createTextNode(goal));
    条目.appendChild(goalTxt);
    列表。追加子项(条目);
    //log(list.innerHTML);
    }
    

    注意:我强烈建议不要在
  • 标记内使用
    标记。

    您正在使用
    GetElementsByCassName('MyList')[0]进行更新。innerHTML
    [0]
    意味着它将始终使用
    class='MyList'
    更新第一个元素,因此您的第一个
    li
    值也将得到更新

    你根本不需要那条线。把它拿走。这是一个样本。我已经注释掉了整行

    编辑:或者,如果您希望为所有
    li
    实现以下结构,请使用此选项

    预期结构:

    <li class="MyList">
        <p class="bulletp"></p><div class="goalTxt">abcd</div>
    </li>
    
    function AddGoal() {
        var goal = document.getElementById('goal').value;
        var entry = document.createElement('li');
        entry.setAttribute("class", "MyList");
    
        var bulletp = document.createElement('p'); // to add <p> tag
        bulletp.setAttribute("class", "bulletp");
        entry.appendChild(bulletp);
    
        var goalTxt = document.createElement('div'); // to add <div> tag
        goalTxt.setAttribute("class", "goalTxt");
        goalTxt.appendChild(document.createTextNode(goal));
    
        entry.appendChild(goalTxt);
        list.appendChild(entry);
       //console.log(list.innerHTML);
    
    }
    
  • abcd
  • 对应代码:

    <li class="MyList">
        <p class="bulletp"></p><div class="goalTxt">abcd</div>
    </li>
    
    function AddGoal() {
        var goal = document.getElementById('goal').value;
        var entry = document.createElement('li');
        entry.setAttribute("class", "MyList");
    
        var bulletp = document.createElement('p'); // to add <p> tag
        bulletp.setAttribute("class", "bulletp");
        entry.appendChild(bulletp);
    
        var goalTxt = document.createElement('div'); // to add <div> tag
        goalTxt.setAttribute("class", "goalTxt");
        goalTxt.appendChild(document.createTextNode(goal));
    
        entry.appendChild(goalTxt);
        list.appendChild(entry);
       //console.log(list.innerHTML);
    
    }
    
    函数AddGoal(){
    var-goal=document.getElementById('goal').value;
    弗吉尼亚州