不显示div因为传递的参数(值)表现得像字符串而不是div id

时间:2014-09-19 07:23:36

标签: javascript jquery asp.net-mvc razor-2

JavaScript中存在一个问题,因为传递的参数是值(AWB的ID),但它没有在点击时显示所需的 div ,但它的行为类似于字符串

View.cshtml

@foreach (var item in Model)
{
<tr>
    <td>@item.AWBNO
    </td>
    <td>@item.AIRLINENAME
    </td>
    <td>@item.CARGODATE
    </td>
    @foreach (var itema in entity)
    {


        if (itema.AWBNo == @item.AWBNO)
        {
            Filled = true;
            DCNo = itema.DCNumber;
            break;
        }
        else
        {
            Filled = false;
        }
    }
    <td>
        @if (!Filled)
        {
        @Html.ActionLink(" ", "AddOn", "Section82", new { instanceId = item.AWBId }, new { @class = "AddOn" })                
        }
        @if (Filled)
        {
            <div id = @item.AWBId  style="display: none;" >
                MyTextOnClick</div>
            <button onclick = "Show(value)" value = @item.AWBId>
                ClickMe</button>    
        }
    </td>
</tr>
}

JS:

<script type = "text/javascript">
function Show(value) 
{
    alert(value);
    $("#value").show(); // here is the major problem it's not getting id although in alert it showing the right id.
}
</script>

主要的问题是它没有得到div的id显示虽然在警告它显示正确的AWBId请帮助。

2 个答案:

答案 0 :(得分:3)

您需要在使用它时将值连接到#

function Show(value) 
{
    alert(value);
    $("#"+value).show();
}

编辑:为评论添加代码

HTML:

<button class="some-class-name" value = @item.AWBId>
    ClickMe
</button>    

JQuery的:

$('.some-class-name').on('click', function(){
    var id = $(this).attr('value'); 
    $("#"+id).show();
});

由于您使用的是JQuery,因此您可以执行与编辑类似的操作。

答案 1 :(得分:1)

您需要将value替换为字符串:

function Show(value) 
{
    alert(value);
    $("#" + value).show();
    //   ^^^^^^^^ The + appends the value of `value` to the string
}

例如,如果value包含“foo”,您最终会得到"#foo",它会查找包含id "foo"的元素。

请务必遵循元素的CSS rules for the id values,因为这是一个CSS选择器。 (虽然如果它认为可以,jQuery将使用document.getElementById,这意味着它有时允许一些无效的CSS id选择器,例如querySelector或样式表不会。)