在javascript中传递document.getElementByid中的变量

时间:2011-09-25 18:31:01

标签: javascript html

我有一个变量account_number,其中存储了帐号。现在我想得到id为account_number的元素的值。怎么在javascript中做到这一点?

我尝试过document.getElementById(account_number).value,但它是null。

html看起来像这样:

<input class='transparent' disabled type='text' name='113114234567_name' id='113114234567_name' value = 'Neeloy' style='border:0px;height:25px;font-size:16px;line-height:25px;' />

和js是:

function getElement()
{   
 var acc_list = document.forms.editBeneficiary.elements.bene_account_number_edit;

    for(var i=0;i<acc_list.length;i++)
        {
            if(acc_list[i].checked == true)
                {

                    var account_number = acc_list[i].value.toString();
                    var ben_name = account_number + "_name";

                    alert(document.getElementById("'" + ben_name.toString() + "'").value);
                }
         }

}

这里bene_account_number_edit是单选按钮。

谢谢

4 个答案:

答案 0 :(得分:5)

您是否只存储一个整数作为元素的id属性?如果是这样,浏览器在通过整数id查找元素时往往会以奇怪的方式运行。请尝试传递account_number.toString()

如果不起作用,请将“account_”之类的内容添加到元素“id”属性的开头,然后调用document.getElementById('account_' + account_number).value

答案 1 :(得分:1)

为什么要为名称字符串添加前缀和后缀'个字符? ben_name已经是一个字符串,因为您已将'_name'附加到该值。

我建议您console.log ben_name只是为了确保获得预期的价值。

document.getElementById使用变量的方式与任何其他函数相同:

document.getElementById(ben_name);

我不知道为什么你认为它的行为会有所不同。

答案 2 :(得分:0)

没有使用将ben_name转换为字符串,因为它已经是字符串。 连接两个字符串将始终为您提供字符串。

var account_number = acc_list[i].value.toString();
var ben_name = account_number + "_name";

尝试以下代码,它将正常工作

var ben_name=acc_list[i]+ "_name";

这里也是

alert(document.getElementById("'" + ben_name.toString() + "'").value);

alert(document.getElementById(ben_name).value);

我测试了类似的代码,它们正常工作。如果你传递变量,请不要使用引号。你正在做的是传递ben_name.toString()作为值,它肯定会导致错误,因为它找不到任何具有该id的元素(ben_name.toString())。在每个函数调用中,您传递相同的值,即ben_name.toString(),这当然是错误的。

答案 3 :(得分:0)

我发现此页面正在寻找我的问题的解决方法......

假设您有一个产品清单:

<div class="rel-prod-item">
    <img src="assets/product-photos/title-of-the-related-product_thumbnail.jpg" alt="Western Digital 1TB" />
    <p class="rel-prod-title">Western Digital 1TB</p>
    <p class="rel-prod-price" id="price_format_1">149.95</p>
    <a href="#" title="Western Digital 1TB" class="gray-btn-sm add-to-cart text-shadow">add to cart</a>
</div>

<div class="rel-prod-item">
    <img src="assets/product-photos/title-of-the-related-product_thumbnail.jpg" alt="Western Digital 1TB" />
    <p class="rel-prod-title">Western Digital 1TB</p>
    <p class="rel-prod-price" id="price_format_2">139.95</p>
    <a href="#" title="Western Digital 1TB" class="gray-btn-sm add-to-cart text-shadow">add to cart</a>
</div>

<div class="rel-prod-item">
    <img src="assets/product-photos/title-of-the-related-product_thumbnail.jpg" alt="Western Digital 1TB" />
    <p class="rel-prod-title">Western Digital 1TB</p>
    <p class="rel-prod-price" id="price_format_3">49.95</p>
    <a href="#" title="Western Digital 1TB" class="gray-btn-sm add-to-cart text-shadow">add to cart</a>
</div>

设计师让所有价格都在数字之后。是上标。所以你的选择是让cms从后端分两部分吐出价格并将其与它周围的<sup>标签一起放回去,或者只是不管它并通过DOM改变它。这就是我选择的内容,这就是我想出的内容:

window.onload = function() {

    var pricelist = document.getElementsByClassName("rel-prod-price");
    var price_id = "";
    for (var b = 1; b <= pricelist.length; b++) {
        var price_id = "price_format_" + b;
        var price_original = document.getElementById(price_id).innerHTML;
        var price_parts = price_original.split(".");
        var formatted_price = price_parts[0] + ".<b>" + price_parts[1] + "</b>";
        document.getElementById(price_id).innerHTML = formatted_price;
    }

}

这是我使用的CSS:

.rel-prod-item p.rel-prod-price b {
    font-size: 50%;
    position: relative;
    top: -4px;
}

我希望这可以帮助别人保留所有头发: - )

Here's a screenshot of the finished product