document.getElementById()问题

时间:2011-05-20 06:51:02

标签: javascript html

我有这行代码:

<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 ($id."/".$blocked_user)

有人能帮帮我吗? 谢谢

7 个答案:

答案 0 :(得分:4)

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

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

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

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


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


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

答案 1 :(得分:2)

不要指出明显的,但val不是实际值。您需要document.getElementById('profilelink').value来执行此操作。

答案 2 :(得分:1)

当你这样做时

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>

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

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

例如:

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

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

试试这种方式

答案 5 :(得分:0)

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

答案 6 :(得分:0)

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
}