如何在同一浏览器窗口中从另一表单中的一个表单访问变量?

时间:2019-05-06 14:33:51

标签: javascript

我无法从公司使用的基于Web的系统中的特定表单中获取字符串的值。

在浏览器中打开时,它包含三个表单(非框架)。薄的左侧菜单表单,顶部的薄水平横幅横幅表单以及其余80%的右下角加载在我正在构建的表单中。

我需要能够从名为“ mainForm”的顶部横幅表单中获取一个字符串。

此字符串是动态填充的,因为未设置,它只是出现在TD标签之间。另外,它所在的TD元素没有id或名称,但是它是类“ userName”的唯一实例。

我尝试了几种排列方式来尝试访问此类/字符串组合。

我尝试过的例子:

    document.getElementsByClassName("userName")
    document.querySelector('form[name="mainForm"] .userName').innterHTML
    document.getElementsByClassName("userName")[0].innerText
    document.mainForm.querySelector('.userName').innerText
    document.forms.mainForm.getElementsByClassName('userName')
    mainForm.getElementsByClassName("userName")
    window.form["mainForm"].getElementsByClassName("userName")
    document.form["mainForm"].getElementsByClassName("userName")
    window.parent.document.getElementsByClassName("userName")
<!--Excerpts of code-->

    <form name="mainForm" style="margin: 0px;" action="">
        <table>
            <tr>
            <td align="right" class="userName" nowrap="">Target Text</td>
            </tr>
        </table>
    </form>

    <form id="myForm" method="post" action="">
        <button type="button" id="btnLog" name="btnLog" onclick="getLog()">Get 
        Log</button>
    </form>

    function getLog() {
        var elementLog = document.getElementsByClassName("userName");
        var log = elementLog.textContent;
        alert(log);
    }

我希望alert(log)返回userName类的字符串值。

实际发生的是警报触发并显示“未定义”或控制台错误,导致无法获取未定义或空引用的属性。

2 个答案:

答案 0 :(得分:2)

我相信您正在寻找的是innerHTML(而不是innterHTML):

function getLog() {
  var elementLog = document.getElementsByClassName("userName")[0];
  var log = elementLog.innerHTML;
  console.log(log);
}
<!--Excerpts of code-->

    <form name="mainForm" style="margin: 0px;" action="">
        <table>
            <tr>
            <td align="right" class="userName" nowrap="">Target Text</td>
            </tr>
        </table>
    </form>

    <form id="myForm" method="post" action="">
        <button type="button" id="btnLog" name="btnLog" onclick="getLog()">Get 
        Log</button>
    </form>

答案 1 :(得分:0)

    function getLog() {
        alert(document.getElementsByClassName("userName").item(0).innerText);
        }

似乎已经解决了问题!

.item(0)代替[0]

将您的javascript函数放在<head></head>标签之间也很重要 或通常在致电给他们之前!