87,996
社区成员




<tr>
<td width="9%">
<p align="right">层级:</td>
<td colspan="5"> @foreach (var item in Model.effModel)
{
<input type="checkbox" id="@item.EFFECTIVE_ID" name="checkeff" value="@item.EFFECTIVE_ID" onmouseout="hidden()" onmousemove="show()"/>
<span>@item.EFFECTIVE_NAME</span>
<div id="note" style="display:none; position:absolute;z-index:1;" >@item.NOTE</div>
} </td>
<script type="text/javascript">
function show()
{
document.getElementById("note").style.display = "block";
}
function hidden()
{
document.getElementById("note").style.display = "none";
}
</script>
var divs=document.getElementsByTagname('div');
for(var dd in divs){
if(div[dd].calssName=='div_Style'){
//对每个id用@item.EFFECTIVE_NAME来表示的div进行操作
}
}
var inputs=document.getElementsByTagName('input'); //得到所有的input标签
for(var i=0;i<inputs.length;i++){ //将你动态创建的标签再次循环一遍,避免使用了相同的id
if(inputs.getAttribute('type')=='checkbox'){ //通过判断取出type='checkbox' 的input标签
inputs[i].onmouserover=show;
inputs[i].onmouseover=hidden;
}
}
<input type="checkbox" id="@item.EFFECTIVE_ID" name="checkeff" value="@item.EFFECTIVE_ID" onmouseout="hidden()" onmousemove="show()" />
<span>@item.EFFECTIVE_NAME</span>
<div id="@item.EFFECTIVE_NAME" style="display:none; position:absolute;z-index:1;" >@item.NOTE</div>
我如果把<div>的id用@item.EFFECTIVE_NAME来表示,该如何把这个值传给js呢? @foreach (var item in Model.effModel)
{
<input type="checkbox" id="@item.EFFECTIVE_ID" name="checkeff" value="@item.EFFECTIVE_ID" onmouseout="hidden()" onmousemove="show()"/>
<span>@item.EFFECTIVE_NAME</span>
<div id="note" style="display:none; position:absolute;z-index:1;" >@item.NOTE</div>
} </td>
请教一下,这种创建标签的方式没见过,用什么语言?
一楼的意思就是你这种创建的方式得到的所有的chekbox具有相同的id,这种情况就相当于下面的一个例子:
<input type=''checkbox' id='check' name='checkoff' value='check1' />
<input type=''checkbox' id='check' name='checkoff' value='check2' />
<input type=''checkbox' id='check' name='checkoff' value='check3' />
<input type=''checkbox' id='check' name='checkoff' value='check4' />
<input type=''checkbox' id='check' name='checkoff' value='check5' />'
当为上面的复选框指定事件是这样做的(按照你那种创建方式):
var check='document.getElementById('check');
'check.onmouseout=hidden;
check.onmouseover=show;
你可以看到了,因为id名称相同,执行事件的时候肯定不可能同时多可执行,所以只会选择执行第一个
一般在一个页面中是不允许id名称相同的,这样做麻烦太多
另解:
window.onload(){
var checkboxs=document.getElementsByTagName('input');
for(var i=0;i<checkboxs.length;i++){ //将你动态创建的标签再次循环一遍,避免使用了相同的id
if(i){
checkboxs[i].onmouserover=show;
checkboxs[i].onmouseover=hidden;
}
}
function show()
{
document.getElementById("note").style.display = "block";
}
function hidden()
{
document.getElementById("note").style.display = "none";
}
}