JavaScript 将值传递到弹出页面

javascript pass value to popup page

本文关键字:值传 JavaScript      更新时间:2023-09-26

>我有一个包含 100 行的订单表。 对于其中的每一个,都有一个带有弹出窗口的按钮,用户可以在其中选择他们想要订购的产品。

我已经改编了我在网上找到的javscript,它按照下面的代码工作。 我的问题是我有 100 行,每个产品都有一个名称 SKU1、SKU2、SKU3...SKU4,SKU5。我不想创建 100 个 JavaScript 代码实例?

我正在寻找一种方法将输入字段 sku3 的值传递给弹出窗口,以便它知道要将值发送回哪个字段。

任何帮助将不胜感激。

我的主页代码是:(相关代码片段 - 真实文档中的 100 行)

<tr id="r1">  
    <td>
        <input size=10  type=number id=sku1 name=sku1>
        <img src=q.png border=0 onClick="window.open('popupselector.php','orderform','width=500,height=600');">
    </td>
    <td>
        <input type="number" name="qty1" id="qty1">
    </td>   
</tr>
<tr id="r2">  
    <td>
        <input size=10  type=number id=sku2 name=sku2>
        <img src=q.png border=0 onClick="window.open('popupselector.php','orderform','width=500,height=600');">
    </td>
    <td>
        <input type="number" name="qty2" id="qty2">
    </td>   
</tr>
<tr id="r3">  
    <td>
        <input size=10  type=number id=sku3 name=sku3>
        <img src=q.png border=0 onClick="window.open('popupselector.php','orderform','width=500,height=600');">
    </td>
    <td>
        <input type="number" name="qty3" id="qty3">
    </td>   
</tr>

popupselector.php的javascript代码是:

<SCRIPT LANGUAGE="JavaScript">
function sendValue(s){
var selvalue = s.options[s.selectedIndex].value;
window.opener.document.orderform.sku1.value = selvalue;
window.close();
}
</script>
<form name=selectform>
<SELECT NAME=selectmenu size=30> 
<?=$options?> 
</SELECT> 
<input type=button value="Select" onClick="sendValue(this.form.selectmenu);">
</form>

在javascript有sku1的地方,我希望它是一个变量,具体取决于用户单击的行:

window.opener.document.orderform.sku1.value = selvalue;

我不想将 sku1、sku2、sku3 硬编码到这些页面中,因为我需要 100 个弹出选择器.php页面。

感谢和问候,瑞安·史密斯

我认为您可以创建一个变量作为项目的id,然后在循环中查询它们。

function sendValue(s){
    for (var i = 1; i < 101; i++) {
        var selvalue = s.options[s.selectedIndex].value;
        var itemId = 'sku' + i;
        var item = document.getElementById(itemId).value = selvalue;
    }
    window.close();
}

如果selvalue在每个循环中都没有更改,则可以将其移出循环

- -

更新以将 id 从表单发送到 JavaScript 弹出窗口 - -您可以使用 DOM 访问在 img 单击之前输入的 id:

function sendValue(s){
    var inputField = s.previousSibling; // will be the space between <input> and <img>
    if (inputField.nodeName != 'INPUT') 
        inputField = inputField.previousSibling; // will be the <input> node
    // Here you can get id, name... attributes with: inputField.getAttribute('id'), inputField.getAttribute('name')
    window.close();
}

有人想:如果表行是从PHP代码生成的,为什么不直接将id插入img标签并将其放回popupselector中呢.php

<img src=q.png border=0 onClick="window.open('popupselector.php?<?=$rowId ?>','orderform','width=500,height=600');">