繁体   English   中英

document.getElementById()问题

[英]document.getElementById() problem

我有这行代码:

<a href="#" id="profilelink" name="profilelink" 
    value="<?php echo $id."/".$block_record;?>" 
    onClick="return viewornot(<?php echo $id; ?>)">
   <?php echo $uniqueCode; ?>
</a>

因此,使用onclick时,我想将与被阻止的ID串联在一起的ID传递给我的JS:

function viewornot()
{
    var val = document.getElementById('profilelink');
    var e = confirm('Do you want to view this profile?');

    if (e == true)
    { 
       //for live site
       window.location.href = "http://www.rainbowcode.net/index.php/profiles/showprofilepersonal?id="+id;
       return true;
    }
    else
    {
        //if val contains a 1 then user is blocked
        //display a message then
    }
    return false
}      

该行: var val = document.getElementById('profilelink'); 没有给我我想要的内容,它应该包含与1(已阻止)或0(未阻止) ($id."/".$blocked_user)连接的用户ID

有人能帮助我吗? 谢谢

document.getElementById('profilelink')返回对DOM的引用,而不是您指定的value属性( 这是无效的HTML )。

将其更改为 document.getElementById('profilelink').value 在兼容的浏览器中可能会失败,因为value不是标记的有效属性

要么

document.getElementById('profilelink').getAttribute('value');

演示在 http://jsfiddle.net/gaby/EWdLD/


另外 ,您很可能希望将viewornot()定义更改为viewornot(id)因为您似乎将其作为参数传递,并在方法内部使用它。


在安全方面 ,我希望您不要将其用于真正的安全,因为通过在客户端中操作DOM可以轻松绕过它。 为了获得更强大的安全性,请使用一些服务器端代码对每个请求进行阻止/取消阻止。

没有指出明显的地方,但是val不是实际值。 您需要document.getElementById('profilelink').value来做到这一点。

当你做

var val = document.getElementById('profilelink');

您实际上正在使用作为链接的DOM元素。 您真正想要的是传递给您的方法的参数。

更改您的方法签名

function viewornot(blockedStatus) {
   var val = blockedStatus;
   //your code
}

您可能还想更改链接

<a href="#" id="profilelink" name="profilelink" 
    value="<?php echo $id."/".$block_record;?>" 
  -->   onClick="return viewornot('<?php echo $id."/".$block_record;?>')">
   <?php echo $uniqueCode; ?>
</a>

a标签没有value属性。 您需要将此值传递给函数。

<a href="#" id="profilelink" name="profilelink" onClick="return viewornot(<?php echo $block_record; ?>)"><?php echo $uniqueCode; ?></a>

<a>标记中没有可用的"value"属性,您可以将其作为参数传递,并将另一个参数作为传递

例如:

<a onclick="view(<?php echo id ?>)</a>

<script>
   function view(id){
         alert(id);
   }
</script>

试试这个

如果要循环链接创建脚本,则每个链接将具有一个profilelink的ID。 您可以通过将数据库ID添加到锚标记中ID的末尾来解决此问题。 最好将所有内容都传递给该函数,而不用担心为锚定变量。

Ahref不能有值。 只需通过onclick函数传递“ val”即可。 “ val”将通过函数传递,然后您不需要getElementById

<a href="#" id="profilelink" name="profilelink" onClick="viewornot(<?php echo $id; ?>)"><?php echo $uniqueCode; ?></a>

    function viewornot(val)
    {

    var e = confirm('Do you want to view this profile?');

    if (e == true)
    { 
       //for live site
       window.location.href = "http://www.rainbowcode.net/index.php/profiles/showprofilepersonal?id="+id;
       return true;
    }
    else
    {
        //if val contains a 1 then user is blocked
        //display a message then
    }
    return false
}      

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM