Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用eval引用跨度图元_Javascript - Fatal编程技术网

Javascript 使用eval引用跨度图元

Javascript 使用eval引用跨度图元,javascript,Javascript,我有一个函数,它引用一个输入,并用最后一行相应地更改它的值: eval('document.forms[0].telephone').value = $telephone[$i]; 但是,我需要将中显示的内容移动到span,并需要正确引用它。目前,input有一个name和一个id“country”,我相信我的eval()引用的是name 我的span没有名称,而是有classtel前缀 我尝试通过以下方式(以及多种组合方式)引用它,但都不起作用: eval('document.forms[0

我有一个函数,它引用一个
输入
,并用最后一行相应地更改它的值:

eval('document.forms[0].telephone').value = $telephone[$i];
但是,我需要将中显示的内容移动到
span
,并需要正确引用它。目前,
input
有一个
name
和一个
id
“country”,我相信我的
eval()
引用的是
name

我的span没有
名称
,而是有class
tel前缀

我尝试通过以下方式(以及多种组合方式)引用它,但都不起作用:

eval('document.forms[0].tel-prefix').value = $telephone[$i];
eval('.tel-prefix').value = $telephone[$i];
eval('.tel-prefix').text= $telephone[$i];
$('.tel-prefix').value = $telephone[$i];
$('.tel-prefix').value($telephone[$i]);
如何让我的
eval()
更改我的
span
的值

完整JS

$telephone = new Array(4)
$telephone  [0] = "+93"
...
$telephone  [246] = "+260"
$telephone  [247] = "+263"

function getTelephone($selectedIndex) {
    $selectBox = document.forms[0].spch_country;
    if ($selectBox.options[$selectedIndex].value != 'none') {
        for ($j = 0, $i = $selectedIndex; $i < $selectedIndex + 1; $j++, $i++) {
            eval('document.forms[0].tel-prefix').value = $telephone[$i];
        }
    }
}
$telephone=新阵列(4)
$telephone[0]=“+93”
...
$telephone[246]=“+260”
$telephone[247]=“+263”
函数getTelephone($selectedIndex){
$selectBox=document.forms[0].spch_country;
如果($selectBox.options[$selectedIndex].value!=“无”){
对于($j=0,$i=$selectedIndex;$i<$selectedIndex+1;$j++,$i++){
eval('document.forms[0].tel前缀')。值=$telephone[$i];
}
}
}

首先,使用
eval
是完全没有道理的,因为没有任何东西需要这样评估。最初的代码应该是:

document.forms[0].telephone.value = $telephone[$i];
eval
函数将字符串计算为代码,这通常与风险和类似风险相关。实际上,不需要使用
eval
访问元素,即使使用动态字段名,也可以不使用
eval
按名称访问元素。例如:

var formNumber = 0;
var fieldName = "telephone";
document.forms[formNumber][fieldName].value = $telephone[$i];

返回到
span
;在现代浏览器中,您可以使用来使用类名查找它。然后使用
innerHTML
属性设置内容:

document.querySelector('.tel-prefix').innerHTML = $telephone[$i];
要在较旧的浏览器中工作,如果您可以在span中添加一个id(例如
id=“telPrefix”
),则可以使用
getElementById
方法:

document.getElementById('telPrefix').innerHTML = $telephone[$i];

可以使用类名查找元素,但是您需要循环页面中的所有元素,直到在不支持
querySelector
方法的浏览器中找到它。

只是一个建议,最好不要使用
eval
。不幸的是,这不是我的代码。我甚至不知道什么是
eval
!您使用的eval只返回元素。。。你可以从它周围放下eval,直接访问节点。。。此外,eval('.class')不会返回类似的内容。试试$(“.tel prefix”)…您能显示完整的javascript代码吗?