我有一个变量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是单选按钮。
谢谢
答案 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;
}
我希望这可以帮助别人保留所有头发: - )