【问题标题】:Printing a JS variable in a value="" attribute在 value="" 属性中打印 JS 变量
【发布时间】:2011-06-16 06:43:38
【问题描述】:

我正在尝试使用动态值实现 Paypal 按钮。例如,当我输入 value="300.00" 时,按钮工作正常。

但是,如果我按照自己的方式操作,按钮将无法正常工作。变量 price 是 JS 变量,它包含我需要放入 Paypal 按钮的信息。

这是错误的代码行:

<input type="hidden" name="amount" value="<script>document.write(price)</script>.00">

【问题讨论】:

  • 这看起来像一个隐藏字段,而不是一个按钮。

标签: javascript paypal


【解决方案1】:

在javascript中:

document.write('<input type="hidden" name="amount" value="' + price + '">')

或者更好

var div = document.createElement('div');
div.innerHTML = '<input type="hidden" name="amount" value="' + price + '">';
document.body.appendChild(div);

DEMO

【讨论】:

  • 如果 OP 想要多次动态更新输入怎么办?
  • 正确,但是 OP 似乎只想创建一次输入
【解决方案2】:

它不起作用,因为您有未关闭的标签。
请注意,您打开了另一个标签而没有关闭另一个标签。

input type="hidden" name="amount" value="

要实现你想要的,你需要用JSwrite整个block

<script>
document.write('<input type="hidden" name="amount" value="' + price + '.00">');
</script>

【讨论】:

  • 我更喜欢 Šime 的解决方案,因为当价格被攻击者控制时,它不会引入 XSS 漏洞。考虑一下如果价格可以是"&gt;&lt;script&gt;alert("OWNED")&lt;/script&gt; 会发生什么
  • 没有足够的信息对此发表评论。它可能只是在别处计算的直接数字,因为您可以控制脚本。
【解决方案3】:
document.getElementsByName('amount')[0].value = price;

这将找到“按钮”并将其值设置为price 变量的值。我假设“按钮”已经在页面的某个地方。

【讨论】:

    猜你喜欢
    • 2022-11-10
    • 2021-07-22
    • 1970-01-01
    • 2015-06-24
    • 1970-01-01
    • 1970-01-01
    • 2021-11-28
    • 2020-10-06
    • 1970-01-01
    相关资源
    最近更新 更多