我很想知道如何在元素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";
}
感谢您建议如何完成这两项任务...让标题消失,并且标题显示只传递单词标题。 (我之所以要将标题作为参数传递,因为有很多其他字段需要编辑,我想将其作为一个参数传递。)
答案 0 :(得分:2)
当你说document.getElementById('fieldedit')
时,你说的是“fieldingit”作为id的元素。你想要的是“具有变量fieldingit内容的元素作为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 引用了该元素,您可以使用:
field.style.display = 'none';
您也可以在一行中完成所有操作:
document.getElementById('title').style.display = 'none';
答案 1 :(得分:1)
document.getElementById('fieldedit').innerHTML = "editstring";
不应该是
document.getElementById(fieldedit).innerHTML = editstring;
?
如果我理解你的问题,你想获得id为“titleedit”的范围并插入存储在editstring
中的输入元素。