2

次の Javascript は IE8 では機能しませんが、FF、Safari、IE9、および Chrome では正常に機能します。私はJavascriptの初心者であることを認めており、解決策を探すのに2日間を費やしましたが、運がありませんでした. IE8 はトグル機能や非表示が好きではありません。

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>

<style type="text/css">
.hide {
    display: none;
}
</style>



<script type="text/javascript">
function toggleField(evt) {
            evt = (evt) ? evt : event;
            var target = (evt.target) ? evt.target : evt.srcElement;
            var block = document.getElementById("specialty");
            if (target.id == "fieldFlag1") {
                block.style.display = "block";
            } else {
                block.style.display = "none";
            }
        }
</script>

</head>

<body>

<div id="profession">       

             Field of professional work (as applicable):
            <select size="1" name="profession">
                <option>-- Choose One --</option>
                <option value="Architecture">Architecture</option>
                <option value="FineArts">Arts, Fine</option>
                <option value="PerformingArts">Arts, Performing</option>
                <option value="Business">Business</option>
                <option value="Consulting">Consulting</option>
                <option value="Counseling">Counseling</option>
                <option value="Dentistry">Dentistry</option>
                <option value="Education">Education</option>
                <option value="Engineering">Engineering</option>
                <option value="Environment">Environment</option>
                <option value="Finance">Finance</option>
                <option value="Government">Government</option>
                <option value="Healthcare—NonMedical">Healthcare&#8212;Non&#160;Medical</option>
                <option value="HigherEducation">Higher&#160;Education</option>
                <option value="InformationTechnology">Information&#160;Technology</option>
                <option value="Law">Law</option>
                <option value="Marketing">Marketing</option>
                <option value="Media/Communications">Media/Communications</option>
                <option value="Medicine">Medicine</option>
                <option value="Military">Military</option>
                <option value="Music">Music</option>
                <option value="NonProfit">Non&#160;Profit</option>
                <option value="Nursing" id="fieldFlag1" onclick="toggleField(event)">Nursing</option>
                <option value="PublicService">Public&#160;Service</option>
                <option value="Science/Research">Science/Research</option>
                <option value="SocialServices">Social&#160;Services</option>
                <option value="Sports">Sports</option>
                <option value="Trade/Craft">Trade/Craft</option>
              </select>
    </div>


  <div id="specialty" class="hide">
       Choose Specialty:
        <select name="Specialty" size="1">
<option value="nursing">Nursing</option>
<option value="nurse Practitioner Unspecified">Nurse‌·Practitioner‌·Unspecified</option>
<option value="nurse inactive">Nurse‌·Inactive</option>
<option value="womens health">Womens‌·Health</option>
<option value="administration">Administration</option>
<option value="hospital">Hospital</option>
<option value="critical care">Critical‌·Care</option>
<option value="home health">Home‌·Health</option>
<option value="surgical">Surgical</option>
<option value="clinical Research">Clinical‌·Research</option>
<option value="family health">Family‌·Health</option>
<option value="acute care nursing">Acute‌·Care‌·Nursing</option>
<option value="community Health Nursing">Community‌·Health‌·Nursing</option>
<option value="emergency nursing">Emergency‌·Nursing</option>
<option value="nurse practitioner: adult health">Nurse‌·Practitioner:‌·Adult‌·Health</option>
<option value="nurse practitioner: pediatrics">Nurse‌·Practitioner:‌·Pediatrics</option>
<option value="nurse practitioner: neonatal">Nurse‌·Practitioner:‌·Neonatal</option>
<option value="nurse practitioner: acute care">Nurse‌·Practitioner:‌·Acute‌·Care</option>
<option value="nurse practitioner: family">Nurse‌·Practitioner:‌·Family</option>
<option value="nurse practitioner: gerontology">Nurse‌·Practitioner:‌·Gerontology</option>
<option value="nurse practitioner: women's health">Nurse‌·Practitioner:‌·Women's‌·Health</option>

</select>
</div>
</body>
</html>
4

3 に答える 3

0
function toggleField(target) {            
            var block = document.getElementById("specialty");
            if (target.options[target.selectedIndex].value == "Nursing") {
                block.style.display = "block";
            } else {
                block.style.display = "none";
            }
        }

およびHTMLの場合(のonchangeイベントの代わりに'sのselect代わりに使用されます):optiononclick

<select size="1" name="profession" onchange="toggleField(this)">

ここでthis、は変更された要素を指します。それらすべてを書かないためだけに

evt = (evt) ? evt : event;
var target = (evt.target) ? evt.target : evt.srcElement;

onclickオプションについて-私はそれがまったく利用可能であるべきではないと思います。

UPD:これは、onclickイベントをサポートしていないブラウザの リストを見つけることができる答えです。<option>

于 2013-01-15T18:20:40.930 に答える
0

最初の選択変更で

var e = document.getElementById("your First Select");
var valueOption= e.options[e.selectedIndex].value;
var block = document.getElementById("specialty");

if (valueOption == "Nursing")
      block.style.display = "block";
} else {
      block.style.display = "none";
}
于 2013-01-15T18:23:23.263 に答える
0

コードを IE8 で動作させるには、次のように変更する必要があります。

var target = (evt.target) ? evt.target : evt.srcElement;

と:

var target = (evt.currentTarget) ? evt.currentTarget : event.srcElement;

その理由は、Internet Explorer の 9.0 より前のバージョンでは、イベントを標準的な方法で処理しないためです。

イベントがトリガーされるたびに、という名前のグローバル変数eventがどこでも使用可能になります。これは、イベント オブジェクトとして知られています。

詳細については、次の URL を確認してください。

http://msdn.microsoft.com/en-us/library/ie/ms535863%28v=vs.85%29.aspx

于 2013-01-15T18:17:26.337 に答える