PHP Javascript无法访问php模式之外的echo元素id

时间:2015-05-04 09:53:56

标签: javascript php

如果这是一个愚蠢的问题,那就是谦虚的批评,但我不知道我的生活在这里找出了什么问题。

我在php模式中有一个echo元素:

echo'<select name="picks" id="winner">';
            echo'<option value="'.$row['team1'].'">'.$team1.'</option>';
            echo'<option value="'.$row['team2'].'">'.$team2.'</option>';
    echo'</select>';

现在 外面 php 我尝试做一个基本的javascript GET:

document.getElementById("winner");

然而,如果我在这里遗漏了某些东西,那么这个元素是无法访问的,是不是可以获得回显的元素ID?

5 个答案:

答案 0 :(得分:2)

在执行元素选择之前,您应该确保您的DOM至少已加载。如果您可以使用jQuery,那么就像下面这样简单,您可以将此脚本放在head部分或body中的任何位置:

$(document).ready(function() {
    // Perform any selects on the DOM
});

<强> JS

<script src="//code.jquery.com/jquery-1.9.1.min.js"></script>
<script>
$(document).ready(function() {
    // The DOM is loaded and ready to be selected
    var select = document.getElementById("winner");
    var optionText = select.options[select.selectedIndex].text;
    var optionValue = select.options[select.selectedIndex].value;
});
</script>

当然你也可以使用jQuery执行DOM选择:

<script src="//code.jquery.com/jquery-1.9.1.min.js"></script>
<script>
$(document).ready(function() {
    // The DOM is loaded and ready to be selected
    var optionText = $("#winner option:selected").text();
    var optionValue = $("#winner option:selected").val();
});
</script>

另一种可能性

如果未定义$row$team1$team2并且您启用了PHP错误和通知,则HTML将呈现如下:

<select name="picks" id="winner"><b>E_NOTICE : </b> type 8 -- Undefined variable: row -- at line 4<br /><b>E_NOTICE : </b> type 8 -- Undefined variable: team1 -- at line 4<br />
    <option value=""></option><b>E_NOTICE : </b> type 8 -- Undefined variable: row -- at line 5<br /><b>E_NOTICE : </b> type 8 -- Undefined variable: team2 -- at line 5<br />
    <option value="" selected="selected"></option>
</select>

但是,如果您将PHP错误和警告设置为关闭,您会看到类似的内容:

<select name="picks" id="winner">
    <option value=""></option>
    <option value="" selected></option>
</select>

如果您无法访问选择HTML中的选项值(因为它们是空的),这将是一个很好的开始调查的步伐。

答案 1 :(得分:0)

使用JQUERY,您可以尝试以下操作:

// I have used mouse down event for demo purpose.
$(document).delegate('#winner', 'mousedown', function ()
{
  alert('hi');
});

答案 2 :(得分:0)

尝试访问所选ID的值 我正在给一个演示小提琴 Demo fiddle     document.getElementById("winner").value;

答案 3 :(得分:0)

回应JS代码很常见,但有以下几种可能:

1 - 在php创建该元素之前放置document.getElementById("winner");

2 - 脚本标记中存在语法错误,导致错误,而选择不起作用。

答案 4 :(得分:0)

由于php部分在页面加载之前可用,你可以这样做:

<?php 
$row['team1']=1;$team1='India';$row['team2']=2; $team2='SA';
echo'<select name="picks" id="winner">';
echo'<option value="'.$row['team1'].'">'.$team1.'</option>';
echo'<option value="'.$row['team2'].'">'.$team2.'</option>';
echo'</select>';
    ?>
<script>

console.log(document.getElementById("winner"));//see this in console.

</script>