このコードは Firefox で正常に動作し、[検索] ボタンをクリックすると、画像が myText ボックス内に右揃えで表示されます。
function showImg(){
var setStyle = document.getElementById('myText').style ==
"background-color:white" ?
document.getElementById('myText').style =
"background: url(/somePath/someImg.gif) no-repeat; background-position:right; background-color:white" :
document.getElementById('myText').style == "background-color:white";}
<input type="text" id="myText">
<input type="button" value="Search" onClick="showImg()">
しかし、IE8では「メンバーが見つかりません」がスローされます。それは間違いなくスタイルの設定に関連していますが、それを回避する方法がわかりません
助けてくれてありがとう
#みんな答えてくれてありがとう。cssText は、既存のスタイル文字列を検出しようとすると機能しますが、設定しようとすると機能しません (エラーはスローされませんが、画像もスローされません)。style= を使用して設定しようとすると、Member not found エラーが発生します。それは、visibility:hiddenで画像をプリロードしようとしてもうまくいかないと私に思わせます
function showImg(){
if (document.getElementById('myText').cssText = "background-color:white"){
alert("style detected"); // this works
document.getElementById('myText').cssText="background: url(/somePath/someImg.gif) no-repeat; background-position:right; background-color:white"; // this doesn't
} else { alert("style not detected"); }}
<input type="text" id="myText" style="background-color:white">
<input type="button" value="Search" onClick="showImg()">
#
私は一種の解決策を見つけました.IE8のトグルとして機能します(テキストボックス内のonClickでimgが表示/非表示になります)。ただし、Firefox では、一度だけ (!) 表示/非表示になり、その後は何もしません。誰かがそれを修正する方法を知っていますか?
目に見えない 2 番目の画像 (1 ピクセル、透明) を作成し、それらを切り替えています
picShow=new Image();
picShow.src="/somePath/realImage.gif";
picHide=new Image();
picHide.src="/somePath/invisibleImage.gif";
function showImg() {
var imgPath = new String();
imgPath = document.getElementById('myText').style.backgroundImage;
if (imgPath == "url(/somePath/invisibleImage.gif)" || imgPath == "") {
document.getElementById('myText').style.backgroundImage = "url(/somePath/realImage.gif)";
document.getElementById('myText').style.backgroundRepeat="no-repeat";
document.getElementById('myText').style.backgroundPosition="right";
} else {
document.getElementById('myText').style.backgroundImage = "url(/somePath/invisibleImage.gif)";
}
}
#
ああ、Firefox は url("/somePath/invisibleImage.gif") のように URL を二重引用符で囲んで backgroundImage を作成しますが、IE は作成しません。Firefox用にそれらをエスケープする必要があります。他の誰かがそれを必要とする場合に備えて、これは作業コードです。みんなありがとう!
picShow=new Image();
picShow.src="/somePath/realImage.gif";
picHide=new Image();
picHide.src="/somePath/invisibleImage.gif";
function showImg() {
var imgPath = new String();
imgPath = document.getElementById('myText').style.backgroundImage;
if (imgPath == "url(/somePath/invisibleImage.gif)" || imgPath == "url(\"/somePath/invisibleImage.gif\")" || imgPath == "") {
document.getElementById('myText').style.backgroundImage = "url(/somePath/realImage.gif)";
document.getElementById('myText').style.backgroundRepeat="no-repeat";
document.getElementById('myText').style.backgroundPosition="right";
} else {
document.getElementById('myText').style.backgroundImage = "url(/somePath/invisibleImage.gif)";
}
}