使用javascript更改DIV ID

时间:2013-07-10 06:28:34

标签: javascript jquery

尝试将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>

4 个答案:

答案 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>

,而不是更改ID
$("#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?