2017-02-05 25 views
0

だから、私はJavascriptを学んでいて、問題に遭遇しました。私はいくつかのボックスを追加する機能があります。「データの追加」をクリックすると、これを何度もクリックすることができますが、最後の1つを削除できる「データの削除」ボタンがあります。追加されました。Javascript - 最後に追加したdivを削除しますか?

コードはここにあります。

http://codepen.io/whyhellobradley/pen/ggKLXa

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous"> 
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap-theme.min.css" integrity="sha384-fLW2N01lMqjakBkx3l/M9EahuwpSfeNvV63J5ezn3uZzapT0u7EYsXMjQV+0En5r" crossorigin="anonymous"> 
<script src="https://use.fontawesome.com/2d96912e6f.js"></script> 
<style> 
    .hidden{display:none;} 
    .self-input { 
     padding: 5px; 
    } 
    .green { 
     color: #5b7762; 
    } 
    textarea, input{ font-family:monospace; } 
</style> 

<div class="container"> 
<form> 
    <div class="form-group"> 
     <label class="control-label" for="chartType">Chart type: </label> 
     <label class="radio-inline"> 
      <input type="radio" name="chartType" checked id="piechart" value="piechart" onclick="findChartType()">Pie chart 
     </label> 


    </div> 

    <div class="btn-group"> 
    <button type="button" class="btn btn-default" value="Add data" onClick="addInput()">Add data <i class="fa fa-plus-circle green" aria-hidden="true"></i></button> 
    </div> 
    <div id="inputArea"></div> 
    <div class="btn-group"> 
    <button type="button" class="btn btn-primary" value="Generate chart shortcode" onClick="generateString(), datastring()">Generate chart shortcode</button> 
    </div> 

</form> 
<hr> 
    <div class="form-group"> 
     <textarea class="form-control" rows="3" value="" id="finalString"></textarea> 
    </div> 
</div> 
<script> 
    var chartType = document.getElementsByName("chartType"); 
    var title = document.getElementById("title"); 
    var source = document.getElementById("source"); 
    var y_title = document.getElementById("y_title"); 
    var y_max = document.getElementById("y_max"); 
    var y_min = document.getElementById("y_min"); 
    var x_labels = document.getElementById("x_labels"); 
    var dataURL = document.getElementsByName("datalabel"); 
    var dataCAPTION = document.getElementsByName("dataCAPTION"); 


    function createInput(type, name, className=null){ 
     var input = document.createElement("input"); 
     input.type = type; 
     input.name = name; 
     input.class = className; 
     return input 
    } 

    function createLabel(name, text, className=null){ 
     var label = document.createElement("label"); 
     label.for = name; 
     label.class = className; 
     label.innerHTML = text 
     return label; 
    } 

    function addInput() { 
     div = document.createElement("div") 
     div.appendChild(createLabel("datalabel", "URL :&nbsp;", "control-label")) 
     div.appendChild(createInput("text","datalabel","dataLabel")) 
     div.appendChild(createLabel("dataCAPTION", "&emsp;Caption:&nbsp;", "control-label")) 
     div.appendChild(createInput("text","dataCAPTION","dataCAPTION")) 
     div.classList.add("self-input") 
     document.getElementById("inputArea").appendChild(div); 
    } 


    function findChartType() { 
     if (chartType[0].checked == true) { 
      document.getElementById("pieHidden").classList.add("hidden"); 
     } 
     else { 
      document.getElementById("pieHidden").classList.remove("hidden"); 
     } 
    } 

    function datastring() { 
     var ds = ""; 
     for (i = 0; i < dataURL.length; i++){ 
      ds += '<li><a class="ns-img" alt="photo_' + i + '" href="' + dataURL[i].value + '"></a><div class="caption">' + dataCAPTION[i].value + '</div></li> '; 
     } 
     return ds; 
    } 


    function generateString() { 

     if (chartType[0].checked == true) { 
      document.getElementById("finalString").value = '<meta name="viewport" content="width=device-width, initial-scale=1.0" /><link href="style.css" rel="stylesheet" type="text/css" />' + '<script src="script.js" type="text/javascript"></sc' + 'ript><div id="thingy"><div class="slider-inner"><ul>' + datastring() + '</ul></div></div>'; 
     } 

     else if (chartType[2].checked == true) { 
      document.getElementById("finalString").value = "<!--[linechart title=\"" + title.value + "\" source=\"" + source.value + "\" y_title=\"" + y_title.value + "\" y_max=" + y_max.value + " y_min=" + y_min.value + " x_labels=\"" + x_labels.value + "\" " + datastring() + "]-->"; 
     } 
     else { 
      document.getElementById("finalString").value = "Please select a chart type and complete the information for the chart."; 
     } 
    }; 
</script> 

すべてのヘルプは本当に素晴らしいことです。 ありがとうございます。

答えて

0

あなたが次にあなたのfunction addInput()に次の行を追加するには、JavaScriptで

function createButton(type, name, className, value){ 
    var input = document.createElement("input"); 
    input.type = type; 
    input.name = name; 
    input.class = className; 
    input.value = value; 
    input.addEventListener("click", removeData); 
    return input 
} 



function removeData() { 
    this.parentNode.parentNode.removeChild(this.parentNode); 
} 

をこの2つの機能を追加することで、ボタンを作成することができます---

div.appendChild(createButton("button","removeData","btn-disable", 
"RemoveData")) 

ここで働いてexample--

を行きます

<html> 
 
<head> 
 
<meta name="viewport" content="width=device-width, initial-scale=1"> 
 
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css"> 
 
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
 
      <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script> 
 
      
 
<style> 
 
    .hidden{display:none;} 
 
    .self-input { 
 
     padding: 5px; 
 
    } 
 
    .green input{ font-family:monospace; } 
 
</style> 
 

 
<div class="container"> 
 
<form> 
 
    <div class="form-group"> 
 
     <label class="control-label" for="chartType">Chart type: </label> 
 
     <label class="radio-inline"> 
 
      <input type="radio" name="chartType" checked id="piechart" value="piechart" onclick="findChartType()">Pie chart 
 
     </label> 
 

 

 
    </div> 
 

 
    <div class="btn-group"> 
 
    <button type="button" class="btn btn-default" value="Add data" onClick="addInput()">Add data <i class="fa fa-plus-circle green" aria-hidden="true"></i></button> 
 
    </div> 
 
    <div id="inputArea"></div> 
 
    <div class="btn-group"> 
 
    <button type="button" class="btn btn-primary" value="Generate chart shortcode" onClick="generateString(), datastring()">Generate chart shortcode</button> 
 
    </div> 
 

 
</form> 
 
<hr> 
 
    <div class="form-group"> 
 
     <textarea class="form-control" rows="3" value="" id="finalString"></textarea> 
 
    </div> 
 
</div> 
 
<script> 
 
    var chartType = document.getElementsByName("chartType"); 
 
    var title = document.getElementById("title"); 
 
    var source = document.getElementById("source"); 
 
    var y_title = document.getElementById("y_title"); 
 
    var y_max = document.getElementById("y_max"); 
 
    var y_min = document.getElementById("y_min"); 
 
    var x_labels = document.getElementById("x_labels"); 
 
    var dataURL = document.getElementsByName("datalabel"); 
 
    var dataCAPTION = document.getElementsByName("dataCAPTION"); 
 

 

 
    function createInput(type, name, className=null){ 
 
     var input = document.createElement("input"); 
 
     input.type = type; 
 
     input.name = name; 
 
     input.class = className; 
 
     return input 
 
    } 
 
    function createButton(type, name, className, value, onclick){ 
 
     var input = document.createElement("input"); 
 
     input.type = type; 
 
     input.name = name; 
 
     input.class = className; 
 
     input.value = value; 
 
     input.addEventListener("click", removeData); 
 
     return input 
 
    } 
 

 
    function createLabel(name, text, className=null){ 
 
     var label = document.createElement("label"); 
 
     label.for = name; 
 
     label.class = className; 
 
     label.innerHTML = text 
 

 
     return label; 
 
    } 
 

 
    function addInput() { 
 
     div = document.createElement("div") 
 
     div.appendChild(createLabel("datalabel", "URL :&nbsp;", "control-label")) 
 
     div.appendChild(createInput("text","datalabel","dataLabel")) 
 
     div.appendChild(createLabel("dataCAPTION", "&emsp;Caption:&nbsp;", "control-label")) 
 
     div.appendChild(createInput("text","dataCAPTION","dataCAPTION")) 
 
     div.appendChild(createButton("button","removeData","btn-disable", "RemoveData")) 
 

 
     
 
     div.classList.add("self-input") 
 
     document.getElementById("inputArea").appendChild(div); 
 
    } 
 
    function removeData() { 
 
     this.parentNode.parentNode.removeChild(this.parentNode); 
 
    } 
 

 
    function findChartType() { 
 
     if (chartType[0].checked == true) { 
 
      document.getElementById("pieHidden").classList.add("hidden"); 
 
     } 
 
     else { 
 
      document.getElementById("pieHidden").classList.remove("hidden"); 
 
     } 
 
    } 
 

 
    function datastring() { 
 
     var ds = ""; 
 
     for (i = 0; i < dataURL.length; i++){ 
 
      ds += '<li><a class="ns-img" alt="photo_' + i + '" href="' + dataURL[i].value + '"></a><div class="caption">' + dataCAPTION[i].value + '</div></li> '; 
 
     } 
 
     return ds; 
 
    } 
 

 
    
 
    function generateString() { 
 

 
     if (chartType[0].checked == true) { 
 
      document.getElementById("finalString").value = '<meta name="viewport" content="width=device-width, initial-scale=1.0" /><link href="style.css" rel="stylesheet" type="text/css" />' + '<script src="script.js" type="text/javascript"></sc' + 'ript><div id="thingy"><div class="slider-inner"><ul>' + datastring() + '</ul></div></div>'; 
 
     } 
 

 
     else if (chartType[2].checked == true) { 
 
      document.getElementById("finalString").value = "<!--[linechart title=\"" + title.value + "\" source=\"" + source.value + "\" y_title=\"" + y_title.value + "\" y_max=" + y_max.value + " y_min=" + y_min.value + " x_labels=\"" + x_labels.value + "\" " + datastring() + "]-->"; 
 
     } 
 
     else { 
 
      document.getElementById("finalString").value = "Please select a chart type and complete the information for the chart."; 
 
     } 
 
    }; 
 
</script> 
 
    </html> 
 

0

最後に追加された入力を削除するコードは次のとおりです。また、存在しないものを削除しようとしていないことを確認します(リストにユーザーの入力があることを確認します)。

chartType = document.getElementsByName("chartType"); 
 
var title = document.getElementById("title"); 
 
var source = document.getElementById("source"); 
 
var y_title = document.getElementById("y_title"); 
 
var y_max = document.getElementById("y_max"); 
 
var y_min = document.getElementById("y_min"); 
 
var x_labels = document.getElementById("x_labels"); 
 
var dataURL = document.getElementsByName("datalabel"); 
 
var dataCAPTION = document.getElementsByName("dataCAPTION"); 
 

 

 
function createInput(type, name, className = null) { 
 
    var input = document.createElement("input"); 
 
    input.type = type; 
 
    input.name = name; 
 
    input.class = className; 
 
    return input 
 
} 
 

 
function createLabel(name, text, className = null) { 
 
    var label = document.createElement("label"); 
 
    label.for = name; 
 
    label.class = className; 
 
    label.innerHTML = text 
 
    return label; 
 
} 
 

 
function addInput() { 
 
    div = document.createElement("div") 
 
    div.appendChild(createLabel("datalabel", "URL :&nbsp;", "control-label")) 
 
    div.appendChild(createInput("text", "datalabel", "dataLabel")) 
 
    div.appendChild(createLabel("dataCAPTION", "&emsp;Caption:&nbsp;", "control-label")) 
 
    div.appendChild(createInput("text", "dataCAPTION", "dataCAPTION")) 
 
    div.classList.add("self-input") 
 
    document.getElementById("inputArea").appendChild(div); 
 
} 
 

 
function removeInput() { 
 
    inputArea = document.getElementById("inputArea"); 
 
    if(inputArea.childNodes.length > 0){ 
 
    inputArea.removeChild(inputArea.childNodes[inputArea.childNodes.length-1]); 
 
    } 
 
} 
 

 

 
function findChartType() { 
 
    if (chartType[0].checked == true) { 
 
    document.getElementById("pieHidden").classList.add("hidden"); 
 
    } else { 
 
    document.getElementById("pieHidden").classList.remove("hidden"); 
 
    } 
 
} 
 

 
function datastring() { 
 
    var ds = ""; 
 
    for (i = 0; i < dataURL.length; i++) { 
 
    ds += '<li><a class="ns-img" alt="photo_' + i + '" href="' + dataURL[i].value + '"></a><div class="caption">' + dataCAPTION[i].value + '</div></li> '; 
 
    } 
 
    return ds; 
 
} 
 

 

 
function generateString() { 
 

 
    if (chartType[0].checked == true) { 
 
    document.getElementById("finalString").value = '<meta name="viewport" content="width=device-width, initial-scale=1.0" /><link href="style.css" rel="stylesheet" type="text/css" />' + '<script src="script.js" type="text/javascript"></sc' + 'ript><div id="thingy"><div class="slider-inner"><ul>' + datastring() + '</ul></div></div>'; 
 
    } else if (chartType[2].checked == true) { 
 
    document.getElementById("finalString").value = "<!--[linechart title=\"" + title.value + "\" source=\"" + source.value + "\" y_title=\"" + y_title.value + "\" y_max=" + y_max.value + " y_min=" + y_min.value + " x_labels=\"" + x_labels.value + "\" " + datastring() + "]-->"; 
 
    } else { 
 
    document.getElementById("finalString").value = "Please select a chart type and complete the information for the chart."; 
 
    } 
 
};
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous"> 
 
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap-theme.min.css" integrity="sha384-fLW2N01lMqjakBkx3l/M9EahuwpSfeNvV63J5ezn3uZzapT0u7EYsXMjQV+0En5r" crossorigin="anonymous"> 
 
<script src="https://use.fontawesome.com/2d96912e6f.js"></script> 
 
<style> 
 
    .hidden { 
 
    display: none; 
 
    } 
 
    .self-input { 
 
    padding: 5px; 
 
    } 
 
    .green { 
 
    color: #5b7762; 
 
    } 
 
    textarea, 
 
    input { 
 
    font-family: monospace; 
 
    } 
 
</style> 
 

 
<div class="container"> 
 
    <form> 
 
    <div class="form-group"> 
 
     <label class="control-label" for="chartType">Chart type:</label> 
 
     <label class="radio-inline"> 
 
     <input type="radio" name="chartType" checked id="piechart" value="piechart" onclick="findChartType()">Pie chart 
 
     </label> 
 

 

 
    </div> 
 

 
    <div class="btn-group"> 
 
     <button type="button" class="btn btn-default" value="Add data" onClick="addInput()">Add data <i class="fa fa-plus-circle green" aria-hidden="true"></i> 
 
     </button> 
 
     <button type="button" class="btn btn-default" value="Remove data" onClick="removeInput()">Remove data <i class="fa fa-minus-circle green" aria-hidden="true"></i> 
 
     </button> 
 
    </div> 
 
    <div id="inputArea"></div> 
 
    <div class="btn-group"> 
 
     <button type="button" class="btn btn-primary" value="Generate chart shortcode" onClick="generateString(), datastring()">Generate chart shortcode</button> 
 
    </div> 
 

 
    </form> 
 
    <hr> 
 
    <div class="form-group"> 
 
    <textarea class="form-control" rows="3" value="" id="finalString"></textarea> 
 
    </div> 
 
</div>

+0

はありがとうございました。それは素晴らしいように見えます! –

+0

@BradleyDeanJonesこれがあなたの質問に答えた場合は、それを合格とマークするようにしてください。 – Joffutt4

0

それを行うには、多くの方法があります。

私の提案は次のとおりです。

出典:

<!doctype html> 
<html> 
<body> 

<div id="Fields"> 
    <div id="DIV_0"> Field_0: <input type="text"> </div> 
</div> 
<button onClick="AddField()"> Add Field </button> 
<button onClick="DelField()"> Del Field </button> 
<hr> 
<div id="Last_Index"> 0 </div> 

<script> 
    function AddField() 
    { 
     var Last_Index = document.getElementById('Last_Index'); 

     var Add_Index = Number(Last_Index.innerHTML) + 1; 

      Last_Index.innerHTML = Add_Index;  

     var New_Div   = document.createElement('div'); 
      New_Div.id  = 'DIV_'+Add_Index;  
      New_Div.innerHTML = 'Field_'+Add_Index+': '; 

     var New_Input = document.createElement('input'); 

      New_Div.appendChild(New_Input);  

     var Fields = document.getElementById('Fields');  
      Fields.appendChild(New_Div); 
    } 

    function DelField() 
    { 
     var Last_Index = document.getElementById('Last_Index');   

     var Del_Index = Number(Last_Index.innerHTML); 

     if (Del_Index > 0) 
     { 
       Last_Index.innerHTML = Del_Index - 1; 

      var Last_Div = document.getElementById('DIV_'+Del_Index); 
       Last_Div.innerHTML = ''; 

      var Fields = document.getElementById('Fields'); 
       Fields.removeChild(Last_Div); 
     } 
    } 

</script> 

</body> 
</html> 
関連する問題