jQuery,Object没有方法'innerHtml'

时间:2012-01-27 03:48:15

标签: javascript jquery html append

我回答了一个问题,得到了一些有用的建议。我正在尝试创建一个可排序列表,允许用户将youtube url添加到列表中。我将它设置为获取id并将其放入数组中,然后我希望它使用以下javascript将视频URL和“cue”链接附加到列表中:

    _videoId = _videoUrl.replace(/^[^v]+v.(.{11}).*/,"$1");
//place the Videoid in an array
_videoList[_videoList.length] = _videoId;
var $new_element = document.createElement('li');
//set the id of the li element to match it's position in the array
var refId = _videoList.length;
$new_element = $('li').attr('id', refId);
var $link = $('a')
.attr('href', _videoUrl)
.innerHtml(_videoUrl)
.data('refId', refId) // add parent li's id for reference in click event
.appendTo( $new_element )
.bind( 'click', function(){
    cue( $link.data('refId') );
    return false; // prevent browser's default click event
});

$new_element.appendTo( container );

然而它给了我一个错误(在chrome中)

  

Object [object Object]没有方法'innerHtml'

我的HTML看起来像这样:

<div id="hostPanel">
        <div id="videoList">
        <ul id="sortable">

        </ul>
        </div>

任何帮助实现这一目标的帮助都很不错。

1 个答案:

答案 0 :(得分:4)

innerHtml是DOM元素的属性,而不是jQuery对象的方法。请改用html()


修改

关于评论:

$new_element = $('li').attr('id', refId);

这不会创建新的<li> - 元素,它会占用文档中现有的<li> - 元素。

在jQuery中使用

创建一个新元素
$new_element = $('<li/>').attr('id', refId);

这里也一样:

var $link = $('a')

...必须

var $link = $('<a/>')

不要混用jQuery和Javascript(DOM)

这是创建元素的Javascript(DOM):

var $new_element = document.createElement('li');

jQuery期望$()的标记,而DOM方法createElement()期望tagName作为参数。