0

私は自分のプロジェクトの1つでこのコードを使用しようとしています:

https://github.com/cemerick/jsdifflib

編集: 問題のコードへのリンクhttp://jsfiddle.net/BvFNf/3/

現在の形式のコードは次を使用します。

var byId = function (id) { return document.getElementById(id); }
    base = difflib.stringAsLines(byId("baseText").value),
    newtxt = difflib.stringAsLines(byId("newText").value),

ただし、代わりに名前フィールドを使用しようとしています:

var byName = function (name) { return document.getElementsByName(name); }
    base = difflib.stringAsLines(byName("field1")[0].value),
    newtxt = difflib.stringAsLines(byName("field2")[0].value),

追加の子コードは次のとおりです。

        diffoutputdiv.appendChild(diffview.buildView({
            baseTextLines: base,
            newTextLines: newtxt,
            //opcodes: opcodes,
            baseTextName: "Base Text",
            newTextName: "New Text",
            contextSize: contextSize,
            viewType: viewType
    }));

' name="field1" 'htmlにも追加しました。

完全なソースはここにあります: Pastebinコード

Uncaught TypeError: Object #<NodeList> has no method 'appendChild' demo.html:69
diffUsingJS demo.html:69
onclick demo.html:98

返されるデータは、元の byID データ セットと同等です。助けてください。

4

1 に答える 1

4

あなたのコードでは:

//diffoutputdiv = byId("diffoutput"),
diffoutputdiv = byName("diffoutput"),

byIdからへの移行中byNameに、返された一致リストから要素を取得するのを忘れました。ここでも、getElementsByNameノードのリストをgetElementById返し、単一のノードを返します。

diffoutputdiv = byName("diffoutput")[0]
于 2013-02-24T20:25:19.957 に答える