Javascript:按类名获取元素不起作用

时间:2013-03-21 04:00:18

标签: javascript jquery asp.net-mvc-4 razor rich-text-editor

我正在使用富文本编辑器,直到现在都做得很好。我已经制作了一个单独的.js文件,将其用作插件。

现在我想通过.cshtml文件给它一个类名来使用这个插件。但它似乎不起作用,我搜索了相关的答案,他们说使用document.getElementsByClassName将解决我的问题。

请仔细阅读此代码并告诉我出了什么问题?

文字编辑器.js -

var richTextEditor = document.getElementsByClassName("text-editor");
    richTextEditor.contentDocument.designMode = 'ON';
    $('#strong').live('click', function () {
        richTextEditor.contentDocument.designMode = 'ON';
        richTextEditor.contentDocument.body.contentEditable = true;

        richTextEditor.contentDocument.execCommand('bold', false, null);
        richTextEditor.focus();
    });

cshtml文件 -

<script src="/js/Texteditor.js" type="text/javascript"></script>
<script src="/js/jquery.js" type="text/javascript"></script>
 <div  id="strong" class="command btn"><i class="icon-bold icon-black"></i></div>



    <iframe id="edtNoteCreate" class="text-editor"  name="DisplayNote" style="width:430px;height:150px;">@((Model.Note != null ? Model.Note : ""))</iframe>

5 个答案:

答案 0 :(得分:7)

只需获取匹配节点的第一项;它是一个NodeList,但可以像数组一样被解引用。

var richTextEditor = document.getElementsByClassName("text-editor")[0];

答案 1 :(得分:3)

getElementsByClassName返回一个数组,所以像这样使用

 var richTextEditor = document.getElementsByClassName("text-editor");
    richTextEditor[0].contentDocument.designMode = 'ON';
    $('#strong').live('click', function () {
        richTextEditor[0].contentDocument.designMode = 'ON';
        richTextEditor[0].contentDocument.body.contentEditable = true;

        richTextEditor[0].contentDocument.execCommand('bold', false, null);
        richTextEditor[0].focus();
    });

答案 2 :(得分:1)

为什么不使用jquery方法??

var richTextEditor = document.getElementsByClassName("text-editor");

instead try this:

var richTextEditor = $(".text-editor"); //again this is going to return more than  one object.

//so you can also try below code to manipulate in that.

var richTextEditor = $(".text-editor").first(); //for first element. similarly can use .last() or n-th child.

答案 3 :(得分:0)

当你使用jQuery时,为什么不坚持使用jQuery。

  var richTextEditor = $('.text-editor').eq(0);
不推荐使用

和jQuery的live方法,而是使用.on()

答案 4 :(得分:0)

$(“。text-editor”)返回HTMl对象。 “document.getElementsByClassName(”text-editor“)”返回数组对象。