javascript:捕获元素名称和元素的字符串值的语法

时间:2013-03-16 12:47:32

标签: javascript syntax

我很想知道如何在元素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";
}

感谢您建议如何完成这两项任务...让标题消失,并且标题显示只传递单词标题。 (我之所以要将标题作为参数传递,因为有很多其他字段需要编辑,我想将其作为一个参数传递。)

2 个答案:

答案 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中的输入元素。