2017-02-11 4 views
0

問題内側のコメントは、必要に応じてリストを編集するのに役立つ最後の関数に予定されているリスト項目を作成し、項目を設定してから編集するボタン制御機能。興味深いエラーが発生します。コードと

JSBin Link

コード:

// function to edit the desired list item with user input text 
function editAList(){ 
    var list = document.getElementsByTagName("li"); 
    var uList = document.getElementById("List"); 
    var listLength = list.length; // not needed at the moment 
    var listNum = parseInt(prompt("Enter the list number you would like to edit. Any number from 1 to "+listLength))-1; 
    var edit = document.createTextNode(prompt("Enter the new list text")); 
    uList.replaceChild(edit, uList.childNodes[listNum]); 
} 

問題1:

editAList

関数は、 'listNum'のユーザー入力時に、数字0 [技術的には1、それは0から始まることを知らないユーザー用の減算が組み込まれているため1つのみ]に対してのみ機能します。その他の値はエラーを返します 'Uncaught TypeError:' Node 'で' replaceChild 'を実行できませんでした:パラメータ2は' Node '型ではありません。' 1を修正する

試み:

は(JSの書式のこの種を必要としない「緩いスクリプト」言語であることを私の理解にもかかわらず)数に変換するには「のparseInt」を試してみました。 'document.createTextNode(プロンプト(...));'同様のエラーメッセージが表示されました。

問題2:

これは、リスト項目を消去し、2を修正するだけの「編集」のテキストに置き換え

試み:

createTextNode引数内document.createElement("li")を入れてみました - 印刷の結果OBJECT HTML LI createTextNodeメソッドの前後に配置しようとしましたが、 'i'のエラーが発生しました

アイデアはありますか?

答えて

1

使用編集機能:

function editAList(){ 
    var list = document.getElementsByTagName("li"); 
    var uList = document.getElementById("List"); 
    var listLength = list.length; 
    var listNum = parseInt(prompt("Enter the list number you would like to edit. Any number from 1 to "+listLength))-1; 
    var edit = document.createTextNode(prompt("Enter the new list text")); 
    list[listNum].innerHTML=""; 
    list[listNum].appendChild(edit); 
} 
+0

ありがとう働いている - あなたは信用に答える与えました。あなたがフォローアップの質問に答える気にならないなら。 'list [listNum] .innerHTML = "";'とは何ですか?ここでやる?私はそれが問題を解決するのを見るが、私は理由を知るのに十分なJSを理解していない。 – vampiire

+0

これについて今考えてみましょう。テキストをスペースで置き換えてから、リストに編集内容を追加しますか? – vampiire

+0

あなたは正しいです、それは編集されたテキストが前のものに付加されないようになっています。 –

関連する問題