0

要素のIDの文字列値と要素自体の間を行き来する方法に夢中になっています。問題は構文に関係していると思いますが、正しく理解できません。javascriptで1つのパラメーター(この場合は「title」を渡し、それを次のように文字列および要素として使用して、タイトルを非表示にし、タイトルの編集ボックスを表示します)を渡します。

html

//note this html is actually written to page by another javascript function
<span id="title">Title</span><span id="titleedit"></span><img src="edit.gif" onclick="editTitle('title');">

タイトルの周りのアポストロフィを省略すると、次の要素として機能させることができますが、文字列としては機能しません。

javascript

function editTitle(field) {
//using field as string only works if parameter in above is in apostrophes
var fieldedit = field+"edit"
var editstring = '<input type="text" name="title" onclick="saveTitle();">save';
document.getElementById('fieldedit').innerHTML = "editstring";
//using as element only works if above has no apostrophes
field.style.display="none";
}

両方のタスクを実行する方法を提案していただきありがとうございます...タイトルを非表示にし、titleeditを表示して単語のタイトルだけを渡します。(編集する他のフィールドがたくさんあるので、タイトルをパラメーターとして渡したい理由は、それぞれ1つのパラメーターとして渡したいものです。)

4

2 に答える 2

2

あなたが言うときdocument.getElementById('fieldedit')、あなたは「idとして「fieldedit」を持つ要素」を言っています。必要なのは、「変数fieldeditの内容をIDとして持つ要素です。

で試してみてくださいdocument.getElementById(fieldedit).innerHTML = editstring;

更新

この行にも問題があります。

var editstring = "<input type="text" name="title" onclick="saveTitle();">save";

引用符をエスケープするか、一重引用符と二重引用符を組み合わせて使用​​してみてください。例えば:

var editstring = '<input type="text" name="title" onclick="saveTitle();">save';

アップデート2

要素への参照を取得するにはid="title"

var field = document.getElementById('title');

そのフィールドがその要素を参照するようになったので、次を使用できます。

field.style.display = 'none';

すべてを1行で行うこともできます。

document.getElementById('title').style.display = 'none';
于 2013-03-16T12:52:58.950 に答える
1

document.getElementById('fieldedit').innerHTML = "editstring";

それはすべきではありません

document.getElementById(fieldedit).innerHTML = editstring;

editstring質問を理解している場合は、IDが「titleedit」のスパンを取得し、に格納されている入力要素を挿入します。

于 2013-03-16T14:31:55.100 に答える