如何在prototype的$()实用程序方法中传递变量'value?

时间:2009-05-26 13:27:57

标签: javascript methods prototypejs utility

function insertChildDiv(parentId)
{
  var ChildComment = new Element('div', {'class':'padding'});
  ChildComment.update('testing');
  $().insert(ChildComment);
}

我想在行

中的$()内使用parentId的值
$().insert(ChildComment);

我已经尝试了

$('parentId').insert(ChildComment);

但是它将parentId计算为字符串,并且正在查找元素id为“parentId”的div,因此错误将为$(“parentId”)为null

也尝试了

$(parentId).insert(ChildComment);

但它返回错误“$(parentId).insert不是函数”

btw脚本是由这个html调用的

<a href="#" onclick="insertChildDiv(123456)" id="123456more">Replies and more</a>

6 个答案:

答案 0 :(得分:2)

$()接受字符串或DOM元素作为参数

编辑以反映原始Q中的编辑。

只要id有效,

$(parentId)就会起作用。

传递给函数的id是“123456”,你要找的id是“123456more”。另外,您传递的是整数(123456)而不是字符串。无论如何,由于它们不匹配,原型机没有找到它。 另外,id不应该以数字开头:IE8将失败,因为w3c规格说id属性不能以数字开头(如果我没记错的话)

尝试将html更改为

<a href="#" onclick="insertChildDiv('more123456')" id="more123456">Replies and more</a>

它应该有效

答案 1 :(得分:1)

这个来救援。 “this”指的是元素本身,因此将元素引用传递给函数,而不是字符串。

<div onclick="insertChildDiv(this)">###</a>

<script type='text/javascript'>
function insertChildDiv(element) {
    $(element).insert(new Element('div',{'class':'padding'}).update('testing'))
}

// or if you want to add an ID:

function insertChildDiv(element) {
    $(element).insert(new Element('div',{'class':'padding',id:'more'+element.id}).update('testing'))
}

</script>

答案 2 :(得分:0)

你通常会使用$(parentId).insert(...)。

$(parentId + 'more').insert(...)在您的具体案例中不会有效吗?

答案 3 :(得分:0)

parentId的值是此<a href="#" onclick="insertChildDiv('more123456')" id="more123456">Replies and more</a>所在的div的id。我在函数insertChildDiv()中传递了这个parentId的值,以便插入的子div将嵌套在这个父div的div中。 另外,标签id="more123456"的id将用于将href值更改为隐藏插入的子div的值

谢谢我将重命名元素的id以将第一个字符变成字母。

如果我删除在$()ex中包装parentId的单个qoutes。 $(parentId).insert(ChildComment);返回的错误是:

$(parentId).insert is not a function

如果我用单引号包装parentId,原型将找不到ID为'parentId'的div将错误$("parentId") is null

答案 4 :(得分:0)

您的原始函数适用于传递给$()...

的参数
function insertChildDiv(parentId)
{
  var ChildComment = new Element('div', {'class':'padding'});
  ChildComment.update('testing');
  $(parentId).insert(ChildComment);
}

这是一个测试用例:

Passing a variable to $()

答案 5 :(得分:0)

哇谢谢大家! 现在它有效。 为了他人的利益可能会遇到同样的情况,这就是我认为发生的事情: 不要仅仅使用数字作为ELEMENT的ID(即使单词“id”表示它应该是一个数字。)如果你真的需要一个数字,那就是YES,甚至在id ex的开头连一个字母。 id im using now is id =“parent123456”