3

こんにちは私はjavascriptを使用してVML画像要素を追加しようとしています。これが私がこれらの画像を生成するために使用しているものです:

function add_tools()
{       
var elemm = document.createElement('rvml:image'); 
elemm.setAttribute('src', 'pic.png');
elemm.setAttribute('id', 'gogo');
elemm.setAttribute('class', 'rvml');
document.body.appendChild(elemm);   

document.getElementById('gogo').style.position='absolute';
document.getElementById('gogo').style.width=55;
document.getElementById('gogo').style.height=55;
document.getElementById('gogo').style.top=200;
document.getElementById('gogo').style.left=300;
document.getElementById('gogo').style.rotation=200;
document.getElementById('gogo').style.display = "block"; 
}

通常、vml画像要素を生成すると、HTMLコードは次のようになります。

<rvml:image style="POSITION:absolute; WIDTH:55px; HEIGHT:55px; TOP:0px; LEFT:0px; rotation:0;" src="pic.png" id=gogo class=rvml>

これで、上記のjavascript関数はHTML要素で機能します。しかし、VML要素を生成するためにそれを使用するとき。生成された要素はブラウザに表示されません。しかし、document.body.innerHTMLをチェックすると。要素が実際に作成されていることがわかります。しかし、それは表示されていません。

何か案は?javascriptで要素を更新または再描画するために使用できる方法はありますか?またはこれを修正するために使用できるものなら何でも。

ありがとう

4

2 に答える 2

2

私はこれに際限なく苦労し、最終的には代わりに塗りつぶしを使用しました:

<div style="position:relative">
  <vml:rect stroked="f" style="position:absolute"> 
    <vml:fill type="tile" aspect="ignore" src="pathto.png" style="position:absolute">  
    </vml:fill>
  <vml:rect> 
</div>

絶対位置が必要なようです。したがって、divを含む相対位置が必要です。

詳細については、pngアルファ置換にこの手法を使用するjQuery用のsuperpngプラグインを確認してください。

于 2011-05-27T10:40:42.283 に答える
0

ええと。いつものように自分で修正しました...

function add_tools()
{   
var elemm = document.createElement('rvml:image'); 
elemm.src = 'pic.png';
elemm.className = 'rvml';
document.body.appendChild(elemm);
elemm.id = "gogo";
elemm.style.position='absolute';
elemm.style.width=55;
elemm.style.height=55;
elemm.style.top=200;
elemm.style.left=300;
elemm.style.rotation=200; 
}

setAttribute関数が要素のステータスを変更していないようです。しかし、それでも私はイベントに問題があります。今私が使用したい場合:

elemm.onload = "alert('coco')";

これは、要素を描画するjavascript関数を実行したときにトリガーされるはずです。しかし、そのアラートボックスが機能していません。うーん、ちょっと変だ。私はinnerHTMLをチェックしました。私はそれをすぐに見ることができます。

于 2010-07-21T08:40:31.243 に答える