尝试将div id =“test”更改为使用javascript选择的下拉选项中的值。我已经开始了jsfiddle。如果用户选择2013,则div id =“test”应更改为div id =“2013”并显示第二个月份下拉列表。年份下拉列表中的值最终将用于查询数据库中当年记录的实际月份,但现在我有兴趣更改div id并存储该值以供以后使用。
<div class="report_select" id="style_container_div">
<label>Year:</label>
<select size="1" id="year" title="" type="select" name="style">
<option value="">Select Year</option>
<option value="2011">2011</option>
<option value="2012">2012</option>
<option value="2013">2013</option>
</select>
<div class="clear"></div>
<div id="error-message-style"></div>
</div>
<div id="test" class="style-sub-1" style="display: none;" name="stylesub1" onchange="ChangeDropdowns(this.value)">
<label>Select a Month:</label>
<select>
<option value=""></option>
<option value="January">January</option>
<option value="February">February</option>
<option value="March">March</option>
<option value="April">April</option>
<option value="May">May</option>
<option value="June">June</option>
<option value="July">July</option>
<option value="August">August</option>
<option value="September">September</option>
<option value="October">October</option>
<option value="November">November</option>
<option value="December">December</option>
</select>
</div>
<script type="text/javascript">
$("#year").change(function () {
var targID = $(this).val();
$("div.style-sub-1").hide();
$('#' + targID).show();
})
$("div.style-sub-1 select").change ( function () {
$("div.style-sub-2").hide ();
document.getElementById("test").setAttribute("id", targID);
$('#' + targID).show ();
} )
</script>
答案 0 :(得分:2)
请注意,您只使用document.getElementById("id")
而不是$("#id")
,而.setAttribute
代替.attr('attr', 'attrVal')
,您可以执行$("#test")
。
由于select
的ID将被更改,因此解决方案是更改// on change
var $this = $(this);
$this.parent().attr("id", $this.val());
父级的ID。
data-attr
但我建议您使用<div id="test" data-value="test">...</div>
。
$("#test").attr("data-value", $this.val());
然后设置它:
{{1}}
答案 1 :(得分:0)
targID
此方法中没有变量。
$("div.style-sub-1 select").change ( function () {
$("div.style-sub-2").hide ();
document.getElementById("test").setAttribute("id", targID); // error
$('#' + targID).show ();
});
从您的代码中,您似乎已经在使用jQuery
,因此请在
$('#test').prop("id","yourId");
答案 2 :(得分:0)
我updated your JsFiddle。我更改了您的Javascript以反映以下内容:
$("select#year").on('change', function () {
var targID = $(this).val();
$("div.style-sub-1").hide();
$('#' + targID).show();
})
$("select#year").on('change', function () {
var tarID = $(this).val();
$('#test').attr('id', tarID); // document.getElementById("test").setAttribute("id", targID);
$("div.style-sub-2").hide ();
$('#' + tarID).show ();
} )
但是,这不会更改test
更改后的ID。你必须创建一个函数来跟踪它,但它不应该太困难。
答案 3 :(得分:0)
如果你真的想要纯JavaScript选项:
document.getElementById("test").id = "2013";
我也注意到了:
$("div.style-sub-1 select").change ( function () {
$("div.style-sub-2").hide ();
document.getElementById("test").setAttribute("id", targID);
$('#' + targID).show ();
} );
不会在您的代码中触发它。您是否要更改其他.change()
功能中的ID?