0

リンク用の独自のタグを含む HTML ドキュメントを作成します。このタグは、公開システムを通過するときに標準の HTML に変換されます。例えば:

<LinkTag contents="Link Text" answer_id="ID" title="Tooltip"></LinkTag>

これらのドキュメントをオーサリングおよびレビューするとき、これらのリンクを公開する前にブラウザでテストできる必要があります。属性を読み取って<a>タグに書き込むために、次の JavaScript を作成しました。

var LinkCount = document.getElementsByTagName('LinkTag').length; 
for (i=0; i<LinkCount; i++) { 

var LinkText = document.getElementsByTagName('LinkTag')[i].getAttribute('contents');
var articleID = document.getElementsByTagName('LinkTag')[i].getAttribute('answer_id');
var articleTitle = document.getElementsByTagName('LinkTag')[i].getAttribute('title');

document.getElementsByTagName('LinkTag')[i].innerHTML = '<a href="publishing_system_url_id='+ articleID +' title="' + articleTitle + '">' + LinkText + '</a>';
}

これは Firefox ではうまく機能しますが、IE では機能しません。IE での innerHTML の問題について読んだことがありますが、それがここの問題だと思いますが、それを回避する方法を見つけることができませんでした。おそらくjQueryが適しているのではないかと思いましたが、私はそれに精通していません。

これを IE で動作させることができれば、生産性が大幅に向上します。どんなアイデアでも大歓迎です。

4

5 に答える 5

2

innerHTML は、開始/終了タグの内側にあるものに対してのみ機能します。たとえば、 yourLinkTag[i]<a>要素である場合、 innerHTML="<a .... > </a>put は文字どおり the<a tag=LinkTag>との間に配置し</a>ます。

それをDIVに入れる必要があります。おそらく、コードを使用してリンクから描画し、対応する HTML コードを div に配置します。

var LinkCount = document.getElementsByTagName('LinkTag').length; 
for (i=0; i<LinkCount; i++) { 

var LinkText = document.getElementsByTagName('LinkTag')[i].getAttribute('contents');
var articleID = document.getElementsByTagName('LinkTag')[i].getAttribute('answer_id');
var articleTitle = document.getElementsByTagName('LinkTag')[i].getAttribute('title');

document.getElementsById('MyDisplayDiv')[i].innerHTML = '<a href="publishing_system_url_id='+ articleID +' title="' + articleTitle + '">' + LinkText + '</a>';

これにより、div 内に HTML の結果が生成されます。他の要素を 1 つの DIV に単純に追加してLinkTag、Div 内に一種の「Web サイトのプレビュー」を作成することもできます。

document.getElementsById('MyDisplayDiv').innerHTML += '<a href="publishing_system_url_id='+ articleID +' title="' + articleTitle + '">' + LinkText + '</a>';

に注意してください+=。ID「MyDisplayDiv」の DIV に HTML ファブリケーションを追加する必要があります。要素のリストLinkTagは、div 内の HTML 要素のリストに変換されます。

于 2012-06-25T17:36:39.480 に答える
0

このような場合、 DOM関数は単にinnerHTMLを置き換えるよりも「クリーン」(かつ高速)であると見なされる可能性があります。このようなものがあなたにとってよりうまくいくかもしれません:

// where el is the element you want to wrap with <a link.
newel = document.createElement('a')
el.parentNode.insertBefore(newel,prop);
el = prop.parentNode.removeChild(prop);
newel.appendChild(prop);
newel.setAttribute('href','urlhere');

同様のコードがFirebugで正常に機能し、要素を。でラップする必要があり<a> ... </a>ます。

于 2012-06-25T18:09:00.480 に答える
0

私は自分のブログにスクリプトを書きました。これは http://blog.funelr.com/?p=61 にあります: http://blog.funelr.com/?p=61とにかく見てみてくださいテーブル要素の「読み取り専用」であり、自分のものに置き換えます。

于 2013-11-27T07:59:08.223 に答える
0

私はこのxmlObjectを持っています:

<c:value i:type="b:AccessRights">ReadAccess WriteAccess AppendAccess AppendToAccess CreateAccess DeleteAccess ShareAccess AssignAccess</c:value>

私はこれを使用する価値があると思います: responseXML.getElementsByTagNameNS("http://schemas.datacontract.org/2004/07/System.Collections.Generic",'value')[0].firstChild.data

于 2016-05-11T19:16:52.367 に答える
-1
  1. これは最高です:elm.insertAdjacentHTML( 'beforeend', str );

  2. 要素のサイズが非常に小さい場合:elm.innerHTML += str;

于 2018-04-19T06:56:13.630 に答える