0

我对如何在元素的 id 的字符串值和元素本身之间来回切换感到困惑。我认为问题涉及语法,但无法正确处理。我想在javascript中传递一个参数(在本例中为“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 出现仅通过单词标题。(我想将标题作为参数传递的原因是因为有一大堆其他字段要编辑,我想每个都作为一个参数传递。)

4

2 回答 2

2

当您说 时document.getElementById('fieldedit'),您是在说“以“fieldedit”为 id 的元素”。你想要的是“以变量 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';

您也可以在一行中完成所有操作:

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 回答